%定义参数
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-1
    • K: FFT点数,这里是1000
    • dw: 频率分辨率,等于2*pi/K
  • 计算FFT
    • k: 频率序列,从0到K-0.5,并向下取整
    • X: 计算频域波形,使用'x'*exp(- j*dw*nx'*k)公式
  • 绘图
    • 使用figure命令创建一个新图形窗口
    • 使用subplot命令将图形窗口分成2行1列,并在第一行绘制时间域波形
    • 使用stem命令绘制时间域波形,横轴为时间,纵轴为幅度
    • 使用xlabelylabeltitle命令添加轴标签和标题
    • 在第二行绘制幅频响应曲线
    • 使用plot命令绘制幅频响应曲线,横轴为频率(弧度),纵轴为幅度
    • 使用xlabelylabeltitle命令添加轴标签和标题

本代码演示了如何使用MATLAB的FFT函数计算一个简单信号的幅频响应,并绘制时间域波形和幅频响应曲线。 您可以根据需要修改代码中的参数,例如信号长度、FFT点数等,以分析不同的信号。

MATLAB代码:使用FFT分析信号的幅频响应

原文地址: https://www.cveoy.top/t/topic/ojLD 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录