请问在matlab中fft,fft2,fftshift的区别是什么?
matlab中采用fft做傅立叶变换,而要得到其频谱图是不是有一定的要求,下面是我收集到的几个例子:
matlab帮助文件中的核心部分是:
Y = fft(y,512);
Pyy = Y.* conj(Y) / 512;
f = 1000*(0:256)/512;
plot(f,Pyy(1:257))
title('Frequency content of y')
xlabel('frequency (Hz)')
而对于不绘制图片的采用
%求付利叶变换
frequency=1000*(0:512)/1024; % 实际频率点
fftdata=fft(data); %付利叶变换
y=fftdata.*conj(fftdata)/1024
sinfft=fftdata(1:513,2);
cosfft=fftdata(1:513,3);
%求能量最大点
[fz1,f1]=max(abs(sinfft));
[fz2,f2]=max(abs(cosfft));
% 求两信号能量最大点的频率
sin_frequency = frequency(f1); %得到实际频率
cos_frequency = frequency(f2);
% 求两信号能量最大点的相位
phase1=phase(sinfft(f1))*57.3;
phase2=phase(cosfft(f1))*57.3;
fprintf('信号1频率=%fHz\n信号2频率=%fHz\n',sin_frequency,cos_frequency);
fprintf('信号2比信号1幅值衰减=%f db\n',20*log10(fz2/fz1));
fprintf('信号2比信号1相位差=%f度\n',phase1-phase2);
通过这两种方法均可以得到其频率。
请问具体是采用那种方法比较好,请熟悉的人能够解释一下!
|