欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

matlab 幅频响应和相频响应代码

最编程 2024-04-14 15:44:55
...

MATLAB中可以用freqz函数来求取数字滤波器的幅频响应和相频响应。其函数的格式为:

[H, W] = freqz(B, A, n)

其中B和A是数字滤波器的系数,n是所得频率响应的点数(n越大则越精确)。H是幅频响应,W是对应的频率向量(单位为弧度)。如果只需要求幅频响应,则可以直接用plot函数绘制H vs W。

例如,以下代码将求取一个5阶Butterworth低通滤波器的幅频响应和相频响应,并画出它们的图像:

% 设计一个5阶Butterworth低通滤波器
[b, a] = butter(5, 0.2);

% 求取频率响应
n = 512;  % 512个点
[H, W] = freqz(b, a, n);

% 绘制幅频响应
figure;
plot(W, abs(H));
title('Butterworth Lowpass Filter: Magnitude Response');
xlabel('Frequency (rad)');
ylabel('Magnitude');

% 绘制相频响应
figure;
plot(W, angle(H));
title('Butterworth Lowpass Filter: Phase Response');
xlabel('Frequency (rad)');
ylabel('Phase (rad)');

这段代码将绘制出一个类似于下图的幅频响应和相频响应的图像。注意,频率轴的刻度单位为弧度。

Butterworth Lowpass Filter: Magnitude and Phase Responses