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); 通过这两种方法均可以得到其频率。 请问具体是采用那种方法比较好,请熟悉的人能够解释一下! |
![]() |
![]() |
|
|
![]() |
||||
主题 | 主题作者 | 版面 | 回复 | 最后发表 |
[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 |