声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1522|回复: 4

[FFT] 求助傅立叶变换的一些问题

[复制链接]
发表于 2007-7-11 11:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
大家好,我是Matlab的初学者,我最近要用FFT做频谱分析
大致說一下我想做的事
把用示波器采集到的信号(wfm或dat)导入,再做FFT变换
有幾個問題:
1.我看一般例子都是用函数生成信号,再进行FFT变换,但对于实际测到的信号进行FFT变换的例子几乎没有,如我的采样频率是50Ks,FFT运算点数应该怎么取?

2.请高手们帮我看看以下FFT程序有什么问题,谢谢!
function c=pp(p)
d11=size(p)/2;
d1=d11(1,1);
d2=d1-1;
for t=1:d1;
    t1=t+d1;
    r(t,1)=p(t1,3);
    r1(t,1)=p(t1,2);
end
    a=r-mean(r);
subplot(2,1,1);
plot(r1,10*a);
ylabel('I/mA');
xlabel('t/s');
y=fft(a,131072);
f=50000*(0:1024)/131072;
subplot(2,1,2);
plot(f,abs(y(1:1025))/200);
ylabel('I/mA')
xlabel('f/Hz')
c=0;
end
回复
分享到:

使用道具 举报

 楼主| 发表于 2007-7-13 08:38 | 显示全部楼层
自己顶一个,高手请赐教!
发表于 2007-7-13 09:36 | 显示全部楼层
感觉没问题吧。运算点取的越多,频谱越细化,但是你取这么多,也没有必要呀。根据fft的命令提示,当信号的长度大于运算点时,多余的信号长度是要截掉的;而信号的长度小于运算点时,需要补加零直到长度等于所取运算点。

评分

1

查看全部评分

发表于 2007-7-13 16:26 | 显示全部楼层

回复 #2 月芽儿 的帖子

clear
m=importdata();
i=1;
N=1024;
f=500;
while i<1024;
  
    data(i)=m(i);
    i=i+1;
end
data=data-mean(data(:,1));
a=abs(fft(data));
figure(1)
subplot(211)
plot(1:length(data(1:500)),data(1:500))
axis([1,500,1.1*min(data(1:500)),1.1*max(data(1:500))])
Ylabel();
Xlabel();
subplot(212)
plot((1:N/2)*f/N,2*a(1:N/2)/N)
Ylabel();
Xlabel();
仿真的例子和实际的区别并不很大,主要是体现在提取数据上,至于处理的原理上是一致的,这里假设有一列1024个数据的FFT,你可以看看。中间那段while语句是有点暴殄天物,但是我真的习惯了,但愿大伙看见了谅解我。

[ 本帖最后由 zhangnan3509 于 2007-7-13 16:27 编辑 ]

评分

1

查看全部评分

 楼主| 发表于 2007-7-13 20:50 | 显示全部楼层
谢谢 峰之巅 ,zhangnan3509 的热心帮助!:@)
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-7-6 06:37 , Processed in 0.075478 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表