24小时热门版块排行榜    

查看: 2361  |  回复: 5

liulbcd

铁虫 (小有名气)

[求助] 如何用Matlab对函数sin(pi*t)/(pi*t)进行FFT变换 已有2人参与

如题,本人现在想利用Matlab的FFT函数对sin(pi*t)/(pi*t)进行傅里叶变换,通过书本得到其傅里叶变换应为-pi到pi为1,其余频率成分为0. 但本人利用如下程序总是得不到正确结果,烦请大家指正。谢谢。

clc
clear
Fs=1000;
T=1/Fs;
L=1000;
t=(1:L-1)*T; %这一步不从0取值是为了y=sin(pi*t)./pi./t在整个t范围内有值
L=size(t);
L=L(1,2);
y=sin(pi*t)./pi./t;
NFFT=2^nextpow2(L);
Y=fft(y,NFFT)/L;
f=Fs/2*linspace(0,1,NFFT/2+1);
plot(f,2*abs(Y(1:NFFT/2+1)))
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

fanlet

银虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
先画出y=sin(pi*t)./pi./t;
看看是否正确?
野花不栽年年有烦恼无根日日生
2楼2014-09-27 13:20:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

liulbcd

铁虫 (小有名气)

引用回帖:
2楼: Originally posted by fanlet at 2014-09-27 13:20:54
先画出y=sin(pi*t)./pi./t;
看看是否正确?

我尝试画了下,采样长度L取1000时间有点短,不能准确反映信号随时间的变化趋势,将采样长度改为10000后作出的时域图如附图所示,是没有什么问题的
3楼2014-09-27 13:28:02
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

liulbcd

铁虫 (小有名气)

引用回帖:
2楼: Originally posted by fanlet at 2014-09-27 13:20:54
先画出y=sin(pi*t)./pi./t;
看看是否正确?

附图
如何用Matlab对函数sin(pi*t)/(pi*t)进行FFT变换
1111.png

4楼2014-09-27 13:29:05
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

liulbcd

铁虫 (小有名气)

Matlab做FFT要对时域函数有什么要求吗?
5楼2014-09-27 13:32:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

戴钢盔的猪头

木虫 (知名作家)

【答案】应助回帖

引用回帖:
5楼: Originally posted by liulbcd at 2014-09-27 13:32:17
Matlab做FFT要对时域函数有什么要求吗?

不是MATLAB有要求,要做DFT,采样必须等间隔,且满足香农——奈奎斯特采样定理,才能较准确重建傅里叶谱。你这数据没衰减完,变换后矩形底部是不是有锯齿?

[ 发自手机版 http://muchong.com/3g ]
6楼2014-09-30 13:14:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 liulbcd 的主题更新
信息提示
请填处理意见