Привет, парень, я работаю над простыми сигналами, и я хочу рассчитать преобразование Фурье сигнала, получить амплитуду и фазы, а затем восстановить исходный сигнал из этого.
Я основываю свой код на этой теме.
Код:
>> n=0:99;
>> N=length(n);
>> x = sin((2*pi/N).*n).*cos((pi/N).*n);
>> F = fft(x);
>> mag = sqrt(real(F).^2 + imag(F).^2);
>> phase = atan2(imag(F),real(F));
>> re = mag .* cos(phase);
>> im = mag .* sin(phase);
>> F_i = re + 1i*im;
>> x_i = ifft(F_i);
>> figure;stem(x);figure;stem(x_i);
Я получаю совершенно другие графики.
РЕДАКТИРОВАТЬ: на самом деле я делаю это, чтобы проверить, что произойдет с сигналом, если изменится фаза. Таким образом, для повторного построения сигнала мне понадобится фазовый угол.
Я все еще новичок в Фурье + Matlab, поэтому прошу прощения, если я делаю какую-то случайную глупую ошибку. Я буду признателен, если вы, ребята, сможете указать мне правильное направление. Спасибо.
F_i
в основном является ошибкой округления, если вы используетеF_i=re
, цифра воспроизводится правильно. Я недостаточно знаю о преобразованиях Фурье, чтобы сказать вам, почему это так склонно к численной нестабильности. - person David   schedule 13.11.2013