知道单位脉冲响应怎么用matlab求其频率响应
时间: 2023-07-05 12:04:53 浏览: 55
单位脉冲响应是指系统对于单位脉冲输入的响应。如果你已经得到了系统的单位脉冲响应,可以使用MATLAB中的fft函数来求其频率响应。
假设你的单位脉冲响应为h,可以通过以下代码求出其频率响应:
```
H = fft(h);
```
其中,H就是单位脉冲响应的频率响应。如果需要将其转换为幅度频率响应和相位频率响应,可以使用以下代码:
```
H_mag = abs(H);
H_phase = angle(H);
```
其中,H_mag是幅度频率响应,H_phase是相位频率响应。
相关问题
求上面的单位脉冲响应并且用MATLAB绘制
根据上面的代码,使用 `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` 函数用于绘制单位脉冲响应。