ilovecumt 发表于 2007-12-11 16:28

大家看看这是怎么一回事

本帖最后由 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

zhlong 发表于 2007-12-11 16:34

subplot(312);plot(abs(y2(n+1)));

这句中没有显示频率,得到的横坐标只是数据点数。

ilovecumt 发表于 2007-12-11 17:47

感谢大哥的指点,我已经修改如下,问题解决,论坛真是太好了!!!万岁

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]
查看完整版本: 大家看看这是怎么一回事