Matlab中FFT函数作用的数据不足短于一秒的视频怎么发怎么转换坐标轴的倍率?

MATLAB中使用FFT做频谱分析时频率分辨率问题最近做FFT时,使用的采样频率和信号长度的取舍一直没有搞清楚,后来在论坛上发了一个贴子《总结一下使用FFT和维纳-辛钦定理求解PSD问题》(讨论见特别感谢会员songzy41,他的问题给了我很大启示),跟帖中给了我不少启示,并且让我对“频率分辨率”这个概念有了更深入的理解。再次一并感谢论坛的高手们。
频率分辨率,顾名思义,就是将信号中两个靠的很近的频谱分开的能力。信号x(t)长度为Ts,通过傅氏变换后得到X,其频率分辨率为Δf=1/THz),若经过采样后,假设采样频率为fs=1/Ts,而进行频谱分析时要将这个无穷长的序列使用窗截断处理,假设使用矩形窗,我们知道,矩形窗的频谱为sinc函数,主瓣宽度可以定义2*pi/MM为窗宽,那么,时域相乘相当于频域卷积,频域内,这一窗函数能够分辨出的最近频率肯定不可能小于2*pi/M,也就是如果数据长度不能满足2*pi/M<|w2-w1|w2,w1为两个靠的很近的频率),那么在频谱分析时,频谱上将不能分辨出这两个谱,由于w2-w1=2*pi(f2-f1)/fs=2*pi*Δf/fs也就是2*pi/M<2*piΔf/fs得到Δf的限制为fs/M,这就是窗函数宽度的最小选择,就是说,根据Shannon采样定理确定了采样频率后,要根据靠的最近的谱峰来确定最小的采样长度,这样,所作出来的频谱才能分辨出那两个谱峰,也就是拥有了相应的频率分辨率。

考虑双正弦信号:x = sin(2*pi*10*n)+sin(2*pi*9.8*n);根据Shannon采样定理,采样频率要大于截止频率的两倍,这里选采样频率为80,那么,我们可以看到,Δf0.2Hz,那么,最小的数据长度为0.2/80=400,但是对正弦信号的频谱分析经验告诉我们,在截断时截断时的数据要包含整周期,并且后面不宜补零以避免频谱泄露(这一点见胡广书《数字信号处理导论》,清华大学出版社),那么,我们要选择至少980个点,才能保含到一个整周期,另外,FFT的经验告诉我们作分析时最好选择2的整数次幂,我们选择靠的最近的1024点。分析结束。


这是按照我们的分析进行的编程图形

可以看出这两个谱峰很好的被分辨开来,9.8Hz不在谱线上,所以幅值不为1,以下是一些对比:

}

对,建议你先去看一看FFT的算法;FFT可以进行简单滤波。下面针对你的问题解答一下。

fft处理实际上是傅里叶变换的一种算法,他算出的结果是以频率作为横轴,Y轴是幅值情况,因此FFT算出的图像称为幅频特性图;Y轴数值取模方即得功率谱。

fft滤波的是这样操作的,首先对原信号进行FFT变换,得到频域的幅值函数,然后再确定需要的频段,将函数中不需要的频率段幅值置零;然后进行逆傅里叶变换,即得到滤波后的图像。

你所说的问题有一个处理办法,利用循环做,先设定阈值,然后用循环依次检测数据,滤掉不需要的频率。你可以参考一下网上的FFT滤波函数来写

}

新手, 积分 11, 距离下一级还需 39 积分


我不是学通信的,但需要用频谱分析,所以从网上各种搜刮,自己写了一个代码,但不知是否正确、存在什么问题,请大家帮忙建议、改正,多谢了!我使用的是win7 64bit,MATLAB 2010a

比如一个1×n的向量x,采样频率为fs

首先,预处理一下x,以便更好的使用快速傅里叶变换(FFT)

在得到的图中观察峰值所对应的横坐标,即为x的频率。

希望诸位多提意见,在此先行谢过!

}

我要回帖

更多关于 短于一秒的视频怎么发 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信