PphantomwrestНу вот я бы очень хотел, чтобы оно так легко и просто получилось, но у меня не получается.
Код:
step = 0.01; %in seconds
SignalLength = 1.5; %in seconds
t = (0:step:SignalLength-step);
S = 0.7*sin(2*pi*3*t) + sin(2*pi*6*t);
F = fft(S); % Это фурье образ, здесь всё в порядке. F - это коэфиценты разложения.
F2 = abs(F/size(S,2));
F1 = F2(1:size(S,2)/2+1);
F1(2:end-1) = 2*F1(2:end-1);
f = (0:1/size(S,2):0.5)/step;
t2 = t;
temp2 = zeros(1,size(t2,2));
for n = 1:size(t2,2)
for k = 1:size(F,2)
temp2(n) = temp2(n) + abs(F(k)) * exp(1i * angle(F(k))) * exp((2 * pi * 1i * (n - 1) * (k - 1))/(size(t2,2)));
%temp3(n) = temp3(n) + abs(F(k)) * exp(1i * angle(F(k))) * exp((2 * pi * 1i * (n - 1) * (k - 1))/(size(t3,2)));
end
end
temp2 = temp2 / size(temp2,2);
figure
plot(t(1:plotingArea), temp2(1:plotingArea))
title('Signal after transformation')
xlabel('t (milliseconds)')
ylabel('X(t)')
%Вот здесь я пытаюсь изменить вектор времени.
t3 = 0:0.005:1.5;
temp3 = zeros(1,size(t3,2));
for n = 1:size(t3,2)
for k = 1:size(F,2)
temp3(n) = temp3(n) + abs(F(k)) * exp(1i * angle(F(k))) * exp((2 * pi * 1i * (n - 1) * (k - 1))/(size(t3,2)));
end
end
temp3 = temp3 / size(temp3,2);
figure
plot(t3(1:plotingArea), temp3(1:plotingArea))
title('Signal after transformation with new vector t')
xlabel('t (milliseconds)')
ylabel('X(t)')
% Вот здесь я дополнительно избегаю зеркального эффекта.
t3 = 0:0.005:1.5;
temp3 = zeros(1,size(t3,2));
for n = 1:size(t3,2)
for k = 1:size(F1,2)
temp3(n) = temp3(n) + abs(F1(k)) * exp(1i * angle(F1(k))) * exp((2 * pi * 1i * (n - 1) * (k - 1))/(size(t3,2)));
end
end
temp3 = temp3 / size(temp3,2);
figure
plot(t3(1:plotingArea), temp3(1:plotingArea))
title('Signal after transformation with new vector t and corrected Fourier coefficients')
xlabel('t (milliseconds)')
ylabel('X(t)')
[img]
https://ibb.co/hidaGp[/img]