Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2009-03-30
年龄: 46
帖子: 2
声望力: 0 ![]() |
![]()
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); 通过这两种方法均可以得到其频率。 请问具体是采用那种方法比较好,请熟悉的人能够解释一下! |
![]() |
![]() |
![]() |
#2 |
初级会员
注册日期: 2008-06-22
年龄: 45
帖子: 13
声望力: 17 ![]() |
![]()
关注一下。
|
![]() |
![]() |
![]() |
#3 |
高级会员
注册日期: 2008-11-01
年龄: 39
帖子: 406
声望力: 26 ![]() |
![]()
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”,再次登陆时亦便于查看回答是否真的帮到你了。 |
![]() |
![]() |
![]() |
主题工具 | |
显示模式 | |
|
|
![]() |
||||
主题 | 主题作者 | 版面 | 回复 | 最后发表 |
[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 |