Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- clc;
- clear;
- T = 5;
- x = 0: .01 : T;
- [y] = textread('f8.txt', '%f');
- N = length(y);
- c = complex(zeros(size(y)));
- for k = 1:N
- for m = 1:N
- c(k) = c(k) + y(m)*(exp((-1i*2*pi*(k-1)*(m-1)) / N)/N);
- end
- end
- z = abs(c);
- extremums = [];
- eps = 1e-5;
- for k = 3:N/2
- if (z(k) > z(k-1) + eps) && (z(k) > z(k+1) + eps) && (z(k) > z(k-2) + eps) && (z(k) > z(k + 2) + eps)
- extremums(end + 1) = x(k);
- end
- end
- extremums
- M = length(extremums) + 4;
- A = zeros(M, M);
- B = zeros(M, 1);
- func = {@(t) t.^3, @(t) t.^2, @(t) t};
- for k = 1:length(extremums)
- func(end + 1) = {@(t) sin(2*pi*extremums(k)*t*100/T)};
- end
- func(end + 1) = {@(t) 1};
- for p = 1:M
- for q = 1:M
- for k = 1:N
- A(p,q) = A(p,q) + func{p}(x(k)) * func{q}(x(k));
- end
- end
- for k = 1:N
- B(p) = B(p) + y(k) * func{p}(x(k));
- end
- end
- a = A^(-1)*B;
- newY = zeros(N,1);
- for k = 1:N
- for i = 1:M
- newY(k) = newY(k) + a(i) * func{i}(x(k));
- end
- end
- figure
- plot(x, y, 'r', x, newY, 'k')
- xlabel('x')
- ylabel('y(x)')
- title('Function')
- grid on
- figure
- plot(x, z, 'b')
- title('DFT')
- xlabel('x')
- ylabel('|c(x)|')
- grid on
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement