求上面的单位脉冲响应并且用MATLAB绘制
时间: 2024-02-25 10:57:19 浏览: 46
根据上面的代码,使用 `impz(hn)` 函数可以求得单位脉冲响应,代码如下:
```
hn = remez(M, fo, mo, w);
h = impz(hn);
```
然后,使用 `stem` 函数可以绘制单位脉冲响应的离散序列图像,代码如下:
```
stem(h);
xlabel('n');
ylabel('h(n)');
title('单位脉冲响应');
```
完整代码如下:
```
Fs = 16000; % 采样频率
f = [2000, 5500]; % 边界频率为模拟频率 (Hz)
m = [0, 1];
rp = 1;
rs = 75;
dat1 = (10^(rp/20) - 1)/(10^(rp/20) + 1);
dat2 = 10^(-rs/20);
rip = [dat2, dat1];
[M, fo, mo, w] = remezord(f, m, rip, Fs);
hn = remez(M, fo, mo, w);
h = impz(hn);
stem(h);
xlabel('n');
ylabel('h(n)');
title('单位脉冲响应');
```
运行后,会得到单位脉冲响应的图像。
相关问题
用matlab怎么绘制滤波器的单位脉冲响应
在 MATLAB 中,可以使用`impulse`函数来绘制滤波器的单位脉冲响应。假设我们有一个低通滤波器,其截止频率为100Hz,我们可以按照以下步骤进行绘制:
1. 定义滤波器的系统函数 H(s) 或传递函数 H(z),并将其转化为差分方程形式。
2. 使用 `tf` 函数将差分方程转换为传递函数。
3. 使用 `c2d` 函数将传递函数离散化。
4. 使用 `impulse` 函数绘制单位脉冲响应。
下面是具体的 MATLAB 代码:
```matlab
% 滤波器参数
fc = 100; % 截止频率
fs = 1000; % 采样频率
order = 4; % 滤波器阶数
% 设计低通滤波器
[b, a] = butter(order, fc/(fs/2));
% 将传递函数离散化
[z, p, k] = butter(order, fc/(fs/2));
[zd, pd, kd] = c2dm(z, p, k, 1/fs, 'zoh');
% 绘制单位脉冲响应
impulse(b, a, zd, pd, 50); % 最后一个参数是绘图时间范围
```
上述代码中,`butter` 函数用于设计低通滤波器,`c2dm` 函数用于将传递函数离散化,`impulse` 函数用于绘制单位脉冲响应。
matlab绘制单位脉冲响应
要绘制单位脉冲响应,首先需要得到系统的冲激响应。可以使用MATLAB中的impulse函数来计算系统的冲激响应。然后,将冲激响应作为输入,使用MATLAB中的stem函数来绘制单位脉冲响应。下面是一个示例代码:
```matlab
% 定义系统的传递函数
num = [1 2 3]; % 分子
den = [1 4 5]; % 分母
sys = tf(num, den);
% 计算系统的冲激响应
t = 0:0.1:10; % 时间范围
h = impulse(sys, t);
% 绘制单位脉冲响应
stem(t, h);
xlabel('时间');
ylabel('幅度');
title('单位脉冲响应');
```
运行此代码,即可得到一个绘制了单位脉冲响应的图形。