使用Matlab进行频谱分析

使用Matlab进行频谱分析


2024年5月17日发(作者:)

使用 FFT 进行频谱分析

1. 快速傅里叶变换(FFT)

按照被变换的输入信号类型不同,傅立叶变换可以分为 4种类型:

1)非周期性连续信号傅立叶变换(Fourier Transform)

2)周期性连续信号傅立叶级数(Fourier Series)

3)非周期性离散信号离散时域傅立叶变换(Discrete Time Fourier Transform)

4)周期性离散信号离散傅立叶变换(Discrete Fourier Transform)

因为计算机只能处理离散的数值信号,对于连续信号要先离散化,我们的最终目的是运

用计算机来处理信号的。

对于离散信号的变换只有离散傅立叶变换(DFT)才能被适用,对于计算机来说只有离

散的和有限长度的数据才能被处理,对于其它的变换类型只有在数学演算中才能用到。

快速傅里叶变换(Fast Fourier Transform,FFT)是DFT的一种快速算法。 DFT的运算

过程是这样的:

1

X(k)=

N

x(n)e

n=0

N−1

−j

nt/N

可见,在计算机上进行的DFT,使用的输入值是经过ADC(Analog-to-Digital Conversion)

后采集到的采样值,也就是时域的信号值,输入采样点的数量决定了转换的计算规模。变换

后的频谱输出包含同样数量的采样点,但是其中有一半的值是冗余的,通常不会显示在频谱

中,所以真正有用的信息是N/2+1个点。

FFT是1965年由T. W. Coody和J. W. Tukey提出的,采用这种算法能使计算机计算离

散傅里叶变换所需要的乘法次数大为减少,特别是被变换的抽样点数N越多,FFT算法计

算量的节省就越显著。

2. MATLAB中FFT的使用方法

1)语法说明

Y = fft(X)

说明:用快速傅里叶变换 (FFT) 算法计算 X 的离散傅里叶变换 (DFT)。

如果 X 是向量,则 fft(X) 返回该向量的傅里叶变换。

如果 X 是矩阵,则 fft(X) 将 X 的各列视为向量,并返回每列的傅里叶变换。

1

 如果 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 的第一个数组维度的处理与在向量情况下

相同。

2)示例

下面的示例说明如何使用 FFT 函数进行频谱分析。FFT 的一个常用场景是确定一个时

域含噪信号的频率分量。

指定信号的参数,采样频率为 1 kHz,信号持续时间为 1.5 秒。

Fs = 1000;

T = 1/Fs;

N = 1500;

% Sampling frequency

% Sampling period

% Length of signal

% 时间轴,从t=0至1.5,步长为0.001,共N个采样点

构造一个信号,其中包含幅值为 0.7 的 50 Hz 正弦量和幅值为 1 的 120 Hz 正弦量。

S = 0.7*sin(2*pi*50*t) + sin(2*pi*120*t);

在时域中绘制这个信号,如图1所示。

plot(t(1:250),S(1:250))

xlabel('Time (s)')

% 绘图,横轴t、纵轴S,绘制前250个点

% 添加横轴标签

% 添加纵轴标签

t = (0:N-1)*T;

ylabel('Amplitude')

title('Time Domain Signal') % 添加标题

2


发布者:admin,转转请注明出处:http://www.yc00.com/web/1715939617a2695104.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信