matlab幅频特性曲线归一化
时间: 2023-11-09 18:07:35 浏览: 362
幅频特性曲线归一化是指将信号的幅度归一化到1,以便更好地观察信号的频率响应。在Matlab中,可以使用freqz函数来绘制幅频特性曲线,并使用normalize函数将幅度归一化到1。具体步骤如下:
1.使用freqz函数计算信号的频率响应,得到幅频特性曲线。
2.使用abs函数计算幅度,并使用normalize函数将幅度归一化到1。
3.使用plot函数绘制归一化后的幅频特性曲线。
相关问题
滤波器产生时域波形和幅频特性曲线matlab
### 使用MATLAB绘制滤波器的时域响应和频率响应
为了在 MATLAB 中生成并可视化滤波器的时域响应(如单位脉冲响应)以及其幅度频率特性曲线,可以通过以下方法实现:
#### 设计 FIR 滤波器
首先定义所需的参数来创建一个有限冲击响应 (FIR) 滤波器。这里假设要设计的是低通滤波器。
```matlab
% 定义采样率和其他必要的参数
Fs = 100; % 采样频率(Hz)
Fc = 20; % 截止频率(Hz)
% 计算归一化截止频率
Wn = Fc / (Fs/2);
% 创建汉宁窗函数作为加权窗口
windowSize = 50;
win = hann(windowSize, 'periodic');
% 利用 fir1 函数设计滤波器系数
b = fir1(windowSize-1, Wn, win);
```
上述代码片段展示了如何设置基本的设计参数,并使用 `fir1` 函数结合特定类型的窗函数(此处选择了汉宁窗),以构建指定特性的 FIR 滤波器[^2]。
#### 绘制时间响应图
接着可以调用内置命令绘出所设计滤波器的时间响应图形表示形式——即单位脉冲响应 h[n]:
```matlab
figure;
stem(b,'filled');
title('Filter Impulse Response');
xlabel('Sample Index n');
ylabel('Amplitude');
grid on;
```
这段脚本会展示滤波器对于单个样本输入(δ[n])所产生的输出序列 b(n),也就是所谓的“单位脉冲响应”。
#### 频率响应分析
最后一步是对新建立起来的数字滤波器执行傅里叶变换操作从而获得它的频谱特征;这可通过 `freqz()` 来完成:
```matlab
[H,freqs]= freqz(b,1,[], Fs);
figure;
subplot(2,1,1), plot(freqs./pi*Fs/2,abs(H));
axis([0 Fs/2 min(abs(H)) max(abs(H))*1.1]);
title('Magnitude Frequency Response of the Filter')
xlabel('Frequency (Hz)')
ylabel('|H(f)|')
subplot(2,1,2), plot(freqs./pi*Fs/2,angle(H)*180/pi);
title('Phase Angle vs Frequency ')
xlabel('Frequency (Hz)')
ylabel('\phi(f)(degrees)');
grid on;
```
此部分不仅显示了绝对值意义上的幅频响应 |H(f)| ,还包含了相角随频率变化的关系 φ(f)[^1]。
设计低通滤波器:要求通带截止频率为0.3π,最大衰减为2dB;阻带截止频率为0.6π,最小衰减为50dB,以及画出该滤波器的幅频特性曲线和相频特性曲线,代码怎么写(分别使用matlab和python)
好的,我可以为您提供关于低通滤波器的解决方案。以下是代码示例:
Matlab代码:
% 定义通带截止频率和阻带截止频率
wp = 0.3*pi;
ws = 0.6*pi;
% 定义最大衰减(通带最大衰减)
Rp = 2;
% 定义最小衰减(阻带最小衰减)
Rs = 50;
% 将截止频率归一化到π
wpn = wp/pi;
wsn = ws/pi;
% 计算通带和阻带的边界截止频率
omega_p = 2*tan(wp/2);
omega_s = 2*tan(ws/2);
% 计算阻带和通带的截止角频率
B = omega_s - omega_p;
Omega_0 = sqrt(omega_s * omega_p);
% 根据最大衰减和最小衰减,计算通带增益和阻带增益
Ap = 1;
As = 10^(-Rs/20);
% 计算所需的滤波器阶数
N = ceil(log10((10^(Rp/20) - 1) / (10^(Rs/20) - 1)) / (2*log10(Omega_0)));
% 计算声学阻抗转换频率
f0 = Omega_0 / (2*pi);
% 使用ellip函数设计滤波器
[b, a] = ellip(N, Rp, Rs, Omega_0, 'low');
% 画出滤波器的幅频和相频特性曲线
[h, w] = freqz(b, a);
mag = 20*log10(abs(h));
phase = unwrap(angle(h));
figure;
subplot(2,1,1);
plot(w/pi, mag);
axis([0 1 -60 5]);
ylabel('幅值(dB)');
title('滤波器的幅频和相频特性曲线');
grid on;
subplot(2,1,2);
plot(w/pi, phase);
ylabel('相位(rad)');
xlabel('频率(πrad/sample)');
grid on;
Python代码:
import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import ellip, freqz
# 定义通带截止频率和阻带截止频率
wp = 0.3*np.pi
ws = 0.6*np.pi
# 定义最大衰减(通带最大衰减)
Rp = 2
# 定义最小衰减(阻带最小衰减)
Rs = 50
# 将截止频率归一化到π
wpn = wp/np.pi
wsn = ws/np.pi
# 计算通带和阻带的边界截止频率
omega_p = 2*np.tan(wp/2)
omega_s = 2*np.tan(ws/2)
# 计算阻带和通带的截止角频率
B = omega_s - omega_p
Omega_0 = np.sqrt(omega_s * omega_p)
# 根据最大衰减和最小衰减,计算通带增益和阻带增益
Ap = 1
As = 10**(-Rs/20)
# 计算所需的滤波器阶数
N = np.ceil(np.log10((10**(Rp/20) - 1) / (10**(Rs/20) - 1)) / (2*np.log10(Omega_0)))
# 计算声学阻抗转换频率
f0 = Omega_0 / (2*np.pi)
# 使用ellip函数设计滤波器
b, a = ellip(N, Rp, Rs, Omega_0, 'low')
# 画出滤波器的幅频和相频特性曲线
w, h = freqz(b, a)
mag = 20*np.log10(np.abs(h))
phase = np.unwrap(np.angle(h))
plt.figure()
plt.subplot(2,1,1)
plt.plot(w/np.pi, mag)
plt.axis([0, 1, -60, 5])
plt.ylabel('幅值(dB)')
plt.title('滤波器的幅频和相频特性曲线')
plt.grid(True)
plt.subplot(2,1,2)
plt.plot(w/np.pi, phase)
plt.xlabel('频率(πrad/sample)')
plt.ylabel('相位(rad)')
plt.grid(True)
plt.show()
阅读全文
相关推荐












