zhangliuchun 发表于 2009-5-6 13:54:19

在matlab中如何编程实现干扰信号的fft转换?

各位好,请教一下,如何把我附件中的电压信号实现FFT变换,画出其幅频曲线?

先谢过。

我的邮箱是zhangliuchun@yahoo.com.cn

zhangliuchun 发表于 2009-5-6 14:39:13

欢迎讨论,欢迎指点,谢谢。

zhangliuchun 发表于 2009-5-6 14:40:02

欢迎指点,讨论,谢谢。

共同进步

zhangliuchun 发表于 2009-5-11 16:31:23

已自行解决。

zhangliuchun 发表于 2009-5-11 17:13:18

4# zhangliuchun


自己解决该问题的代码:

clear
load qs_切空变_vfto520090507
time=t;
data=vMoa4;
%FFT
% N   = data_num;
N=length(time);
Ts=time(2) - time(1);
fs =1/Ts;
fp=fs*(0 : N/2)/N;
Y=fft(data);


Pyy=abs(Y(1 : N/2+1))*2/N;%求幅谱,乘上后面的2/N得到正确幅值;

f= fs*(0:N/2)/N;



figure;hold on;
plot(f(2:end),Pyy(2:end),'k','LineWidth',1.5)
xlabel(' 频率 (Hz) ');
ylabel('幅值 ');
title('电压信号vMoa4的幅频谱图');

请各位指正。

maisigete 发表于 2012-5-16 16:00:05

"Pyy=abs(Y(1 : N/2+1))*2/N;%求幅谱,乘上后面的2/N得到正确幅值;"
请问为什么要乘2/N?我在网上看到别的程序中也有这样的,不过也看到过不乘的

maisigete 发表于 2012-5-16 16:30:02

回复 5# zhangliuchun


    请问画图的时候为什么要从第二个点开始画?

Ericwjc 发表于 2012-5-16 18:20:00

回复 7# maisigete

除以N是由于DFT是N个点相加求和,乘以2是由于出现了正、负频率且正负频率的幅值均为原来的一半,这个在频谱校正里有讲到。

maisigete 发表于 2012-5-17 09:56:37

回复 8# Ericwjc


    请问,在哪本书里什么内容有讲这个?我对这个不太了解
    还有,如果我进行傅里叶分解是为了选择频点在频域内计算,计算完了以后把频域的结果再反变换到时域,那么在傅里叶分解的时候是否还要乘以2/N?如果乘了,在反变换之前是否要对频域内各频点下的结果除以2/N再反变换?
    非常感谢

Ericwjc 发表于 2012-5-17 10:57:52

回复 9# maisigete

为了得到准确的幅值才乘以2/N的。实际的DFT的定义有两种,一种是在正变换里除以N,另一种是在逆变换里除以N。应该说DFT只是一种数学的定义,它可以分析频率成分(实际分析中存在频谱混叠,所以比较精确的场合需要进行校正),但得出的相应频率成分的幅值时需要修正,如乘以2/N。至于这个系数放在正变换里还是逆变换里,关系不大,只要对应上就可以了。
你可以看下《离散频谱分析校正理论与技术》这本书,个人感觉不错。
页: [1] 2
查看完整版本: 在matlab中如何编程实现干扰信号的fft转换?

招聘斑竹