MATLAB代码:采用dir2fs(h)函数实现给定FIR滤波器H(Z)=0.2*(1 + 1z^-1 + 5z^-2+3z^-3++z^4) 请画出其级联型、频率抽样型结构 并写出dir2fs(h)函数
时间: 2024-05-12 07:15:45 浏览: 86
利用MATLAB仿真软件系统结合频率取样法设计一个数字高通FIR滤波器
4星 · 用户满意度95%
以下是给定FIR滤波器H(Z)=0.2*(1 + 1z^-1 + 5z^-2+3z^-3++z^4) 的级联型和频率抽样型结构的MATLAB代码实现:
```matlab
% 给定FIR滤波器的系数
h = 0.2*[1, 1, 5, 3, 1];
% 绘制级联型结构
figure;
stem(h);
title('级联型结构');
xlabel('时域序列');
ylabel('幅度');
% 计算频率抽样型结构
[H, w] = freqz(h, 1, 1024);
M = length(h);
L = 2;
Hs = zeros(L, M/L);
for i = 1:L
Hs(i, :) = H(i:L:end);
end
% 绘制频率抽样型结构
figure;
plot(w/pi, abs(H));
hold on;
for i = 1:L
plot(w(1:L:end)/pi, abs(Hs(i, :)), 'o--');
end
hold off;
title('频率抽样型结构');
xlabel('归一化频率');
ylabel('幅度');
% dir2fs函数实现
function Hs = dir2fs(h)
M = length(h);
L = 2;
Hs = zeros(L, M/L);
for i = 1:L
Hs(i, :) = fft(h(i:L:end), M/L);
end
end
```
其中,dir2fs函数实现了将给定FIR滤波器的系数转换为频率抽样型结构的操作。
阅读全文