MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   请问在matlab中fft,fft2,fftshift的区别是什么? (https://www.labfans.com/bbs/showthread.php?t=7187)

sockhui 2009-03-30 12:14

请问在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);
通过这两种方法均可以得到其频率。


请问具体是采用那种方法比较好,请熟悉的人能够解释一下!

tangxiangwei 2009-04-01 13:17

回复: 请问在matlab中fft,fft2,fftshift的区别是什么?
 
关注一下。

silas_xue 2009-04-02 03:20

回复: 请问在matlab中fft,fft2,fftshift的区别是什么?
 
fft: 1-d signal available, though could be used to 2-d signal.
fft2: 2-d signal available.
fftshift: modify the spetrum with the low and direct frequency values in the centre of the plan and high ones around, and you can also achieve by shift your signal which is to be transformed.

Thx for reading.
PS:若还算满意,直接点击“Thanks”,再次登陆时亦便于查看回答是否真的帮到你了。


所有时间均为北京时间。现在的时间是 14:29

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.