大家看看这是怎么一回事
本帖最后由 wdhd 于 2016-9-8 14:23 编辑各位朋友:
小弟做FFT分析,从论坛上学到了好多东西,感谢大家的无私帮助。现在我遇到一个问题,请大家指点一二。
问题:实际信号我放在exel表格中,用matlab读取其中数据,然后做FFT,画图显示与仪器自带的软件给出的不一致(主频不一致),
因为仪器的图还要用截图软件截取,且以m/s为单位,不能修改,所以我要用matlab做,但是发现这个问题,找了半天,不知道原因何在,如果这个问题不解决,我都不知道下一步做小波分解的结果正确与否了啊。还是到论坛上向大家求教,顺便切磋一二。
a=xlsread('h.xls');
a1=a(:,7);%t
a2=a(:,4);%ch1
a3=a(:,5);%ch2
a4=a(:,6);%ch3
subplot(311);plot(a1,a2);
xlabel('时间 s');ylabel('振速 cm/s');title('时域波形图');
N=length(a2);
n=0:N/2;
y2=fft(a2);
subplot(312);plot(abs(y2(n+1)));
xlabel('频率 Hz');ylabel('功率谱密度');title('频域图');grid;
%可以局部放大图像
pyy=y2.*conj(y2);
subplot(313);plot(pyy(n+1));title('Frequency content of y2');
xlabel('frequency (Hz)');grid;
见附件一。
直接用仪器给出的结果:见附件二
原始信号太大,不能直接贴上。
我的QQ471415413
email:xmzhu126@126.com
subplot(312);plot(abs(y2(n+1)));
这句中没有显示频率,得到的横坐标只是数据点数。 感谢大哥的指点,我已经修改如下,问题解决,论坛真是太好了!!!万岁
a=xlsread('h.xls');
a1=a(:,7);%t时间序列
a2=a(:,4);%ch1
a3=a(:,4);%ch2
a4=a(:,4);%ch3
N=length(a2); %采样点数
fs = 10000; %采样频率&仪器采样时已经确定
t = (0:N-1)/fs; %采样时间序列s
df = fs/N; %频率分辨率Hz
n=0:N/2
f = (0:N/2)*df; %频域序列
y2=fft(a2);
subplot(211);plot(t,a2);
xlabel('时间 s');ylabel('振速 cm/s');title('时域波形图');
subplot(212);plot(f,abs(y2(n+1))*2/N);
xlabel('频率 Hz');ylabel('功率谱密度');title('频域图');grid;
另外,origin的结果也差不多,呵呵,说明是正确的哦
页:
[1]