Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
 
 
主题工具 显示模式
旧 2009-03-30, 12:14   #1
sockhui
初级会员
 
注册日期: 2009-03-30
年龄: 46
帖子: 2
声望力: 0
sockhui 正向着好的方向发展
默认 请问在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);
通过这两种方法均可以得到其频率。


请问具体是采用那种方法比较好,请熟悉的人能够解释一下!
sockhui 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码


相似的主题
主题 主题作者 版面 回复 最后发表
[MATLAB工具箱] QFT工具箱 fjmagic MATLAB论坛 0 2009-05-22 17:12
[MATLAB数学相关] 求助:matlab积分问题,香农限 mailide MATLAB论坛 1 2009-05-16 15:34
[求助]怎么把tiff图像数据读到matlab里面做小波分析? tangpq MATLAB论坛 0 2009-03-17 17:08
[求助]请各位大哥帮帮忙 warlock8238 MATLAB论坛 3 2008-09-14 15:31


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


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