MATLAB代码:采用dir2fs(h)函数实现给定FIR滤波器H(Z)=0.2*(1 + 1z^-1 + 5z^-2+3z^-3++z^4) 请画出其级联型、频率抽样型结构 并写出dir2fs(h)函数
时间: 2024-05-03 13:18:12 浏览: 20
下面是给定FIR滤波器H(Z)的MATLAB代码:
```matlab
% 给定FIR滤波器系数
h = 0.2 * [1 1 5 3 1];
% 画出级联型结构
figure;
subplot(2,1,1);
plot(filter(h,1,[1 zeros(1,99)]));
title('级联型结构');
% 画出频率抽样型结构
N = length(h);
M = 2*N-1;
H = fft(h,M);
W = exp(-1j*2*pi/M);
for k = 1:N
H(k+N:M) = H(k+N:M) * W^(k-1);
end
figure;
subplot(2,1,1);
plot(abs(ifft(H)));
title('频率抽样型结构');
% 定义dir2fs函数
function [num,den] = dir2fs(h)
N = length(h);
if mod(N,2) == 0
h = [h(:);0];
N = N + 1;
end
H = fft(h);
W = exp(-1j*2*pi/N);
A = H(1:N/2+1);
B = conj(flipud(A));
C = A.*B;
D = W.^(0:N-1)';
F = diag(D);
G = real(F*C);
num = G(1:N/2+1);
den = [1; -2*G(N/2+1:-1:2); G(1)];
end
% 使用dir2fs函数
[num,den] = dir2fs(h);
```
其中,`filter(h,1,[1 zeros(1,99)])`用于实现级联型结构的FIR滤波,`fft(h,M)`用于计算频率抽样型结构的DFT,`ifft(H)`用于将DFT转换为时域响应。`dir2fs`函数实现频率抽样型到级联型的转换,其中`h`为输入的FIR滤波器系数,`num`和`den`为输出级联型结构的分子和分母系数。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)