MATLAB代码:使用FFT分析信号的幅频响应
%定义参数
N=3; %信号长度
'x'=[1,1,1]; %信号序列
nx=0:N-1; %信号的时间序列
K=1000; %FFT点数
dw=2*pi/K; %频率分辨率
%计算FFT
k=floor(0:(K-0.5)); %频率序列
X='x'*exp(- j*dw*nx'*k); %计算频域波形
%绘图
figure
subplot(2,1,1);
stem(nx,'x');grid;
xlabel('时间');
ylabel('幅度');
title ('时间域波形');
subplot(2,1,2);
plot(k*dw,abs(X));grid;
xlabel('频率(弧度)');
ylabel('幅度');
title ('系统的幅频响应');
代码注释如下:
- 定义参数
N: 信号长度,这里是3'x': 信号序列,这里是一个长度为3的常数序列nx: 信号的时间序列,从0到N-1K: FFT点数,这里是1000dw: 频率分辨率,等于2*pi/K
- 计算FFT
k: 频率序列,从0到K-0.5,并向下取整X: 计算频域波形,使用'x'*exp(- j*dw*nx'*k)公式
- 绘图
- 使用
figure命令创建一个新图形窗口 - 使用
subplot命令将图形窗口分成2行1列,并在第一行绘制时间域波形 - 使用
stem命令绘制时间域波形,横轴为时间,纵轴为幅度 - 使用
xlabel、ylabel和title命令添加轴标签和标题 - 在第二行绘制幅频响应曲线
- 使用
plot命令绘制幅频响应曲线,横轴为频率(弧度),纵轴为幅度 - 使用
xlabel、ylabel和title命令添加轴标签和标题
- 使用
本代码演示了如何使用MATLAB的FFT函数计算一个简单信号的幅频响应,并绘制时间域波形和幅频响应曲线。 您可以根据需要修改代码中的参数,例如信号长度、FFT点数等,以分析不同的信号。
原文地址: https://www.cveoy.top/t/topic/ojLD 著作权归作者所有。请勿转载和采集!