网上有关“MATLAB中的FFT的采样频率和采样点怎样确定?”话题很是火热,小编也是针对MATLAB中的FFT的采样频率和采样点怎样确定?寻找了一些与之相关的一些信息进行分析 ,如果能碰巧解决你现在面临的问题,希望能够帮助到您 。
在MATLAB中做FFT,首先编写函数 ,对不同的采样频率和采样点数,计算FFT后的频率序列及其对应的幅值:
function?[f amplitude]?=?yopheeFFT(sampleRate,FFT_points)?
n?=?0:FFT_points-1;?
t?=?n/sampleRate;?%采样时间序列?
f_All?=?n*sampleRate/FFT_points;?%频率序列 %构造混有噪声的周期信号并采样?
signal?=?2*sin(2*pi*10*t)+1*sin(2*pi*20.25*t)+0.2*randn(size(t));?%对信号进行快速Fourier变换,并求振幅?
amplitude_All?=?abs(fft(signal,FFT_points))*2/FFT_points;?
f?=?f_All(1:FFT_points/2);?
amplitude?=?amplitude_All(1:FFT_points/2);
扩展资料
MATLAB中FFT函数的意义:
FFT是离散傅立叶变换的快速算法 ,可以将一个信号变换到频域。有些信号在时域上是很难看出什么特征的,但是如果变换到频域之后,就很容易看出特征了。这就是很多信号分析采用FFT变换的原因 。另外 ,FFT可以将一个信号的频谱提取出来,这在频谱分析方面也是经常用的。
模拟信号经过ADC采样之后变成数字信号,可对此数字信号做FFT变换。N个采样点经过FFT之后就可以得到N个点的FFT结果 。为了方便进行FFT运算,通常N取2的整数次幂。
假设采样频率为Fs,信号频率为F ,采样点数为N。则FFT之后结果为N点复数,其中每一个点对应着一个频率点,该点复数的模值为原始信号在该频率值下的幅度特性 。
具体为:假设原始信号在某频率点的幅值为A ,则该频点对应的FFT点复数的模值为A的N/2倍。而FFT第一点为原始信号的直流分量,其模值为原始信号模值的N倍。对于相位,FFT复数的相位即为原始信号在该频率点处的相位。
matlab自带的fft函数是快速傅里叶变换函数 。主要用于降噪处理 ,通过使用傅里叶变换求噪声中隐藏的信号的频率分量。
该函数使用方法:
方法一:
Y?= fft(X)?用快速傅里叶变换 (FFT) 算法计算?X?的离散傅里叶变换?(DFT)。
如果?X?是向量,则?fft(X)?返回该向量的傅里叶变换 。
如果?X?是矩阵,则?fft(X)?将?X?的各列视为向量 ,并返回每列的傅里叶变换。
如果?X?是一个多维数组,则?fft(X)?将沿大小不等于 1 的第一个数组维度的值视为向量,并返回每个向量的傅里叶变换。
方法二:
Y?= fft(X,n)?返回?n?点 DFT 。如果未指定任何值 ,则?Y?的大小与?X?相同。
如果?X?是向量且?X?的长度小于?n,则为?X?补上尾零以达到长度?n。
如果?X?是向量且?X?的长度大于?n,则对?X?进行截断以达到长度?n 。
如果?X?是矩阵,则每列的处理与在向量情况下相同。
如果?X?为多维数组 ,则大小不等于 1 的第一个数组维度的处理与在向量情况下相同。
我们通过下例,来了解fft函数使用过程:
第一步、指定信号的参数,采样频率为 1 kHz ,信号持续时间为 1.5 秒 。
Fs=1000;%采样频率
T=1/Fs;%采样周期
L=1500;%信号长度
t=(0:L-1)*T;%时间向量
第二步 、构造一个信号,其中包含幅值为 0.7 的 50 Hz 正弦量和幅值为 1 的 120 Hz 正弦量。
S = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);
第三步、用均值为零、方差为 4 的白噪声扰乱该信号。
X = S + 2*randn(size(t));
第四步 、在时域中绘制含噪信号。通过查看信号 X(t) 很难确定频率分量 。
plot(1000*t(1:50),X(1:50))
title('Signal Corrupted with Zero-Mean Random Noise')
xlabel('t (milliseconds)'),ylabel('X(t)')
第五步、计算信号的傅里叶变换。
Y = fft(X);
第六步、计算双侧频谱 P2 , 计算单侧频谱 P1。
P2 = abs(Y/L);?
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1)
第七步 、定义频域 f 并绘制单侧幅值频谱 P1
f = Fs*(0:(L/2))/L;
plot(f,P1)?
title('Single-Sided Amplitude Spectrum of X(t)')
xlabel('f (Hz)'),ylabel('|P1(f)|')
运行结果 。
关于“MATLAB中的FFT的采样频率和采样点怎样确定? ”这个话题的介绍,今天小编就给大家分享完了 ,如果对你有所帮助请保持对本站的关注!
评论列表(3条)
我是乐信号的签约作者“雨亦”
本文概览:网上有关“MATLAB中的FFT的采样频率和采样点怎样确定?”话题很是火热,小编也是针对MATLAB中的FFT的采样频率和采样点怎样确定?寻找了一些与之相关的一些信息进行分析,...
文章不错《MATLAB中的FFT的采样频率和采样点怎样确定?》内容很有帮助