matlab FIR结构
时间: 2023-07-20 18:19:06 浏览: 55
MATLAB中的FIR滤波器可以使用不同的结构实现,其中包括直接形式、级联形式和线性相位形式等。
直接形式是最简单的实现方式,也称为直接I型结构,它采用直接计算的方式实现滤波器。直接形式的代码如下所示:
```matlab
% 设计FIR滤波器
b = fir1(20,0.5,'low');
% 直接形式实现
x = randn(1,100);
y = zeros(1,100);
for n = 21:100
y(n) = b * x(n:-1:n-20)';
end
```
级联形式是一种常用的实现方式,也称为直接II型结构,它将滤波器分解为多个级联的二阶段滤波器,每个二阶段滤波器都可以通过直接形式来实现。级联形式的代码如下所示:
```matlab
% 设计FIR滤波器
b = fir1(20,0.5,'low');
% 级联形式实现
x = randn(1,100);
y = zeros(1,100);
h1 = dfilt.df2(b(1:2),1); % 创建二阶段滤波器1
h2 = dfilt.df2(b(3:4),1); % 创建二阶段滤波器2
for n = 1:100
[y(n),v1] = h1(x(n)); % 二阶段滤波器1
[y(n),v2] = h2(y(n)); % 二阶段滤波器2
h1.States = v1; % 更新状态
h2.States = v2; % 更新状态
end
```
线性相位形式是一种特殊的实现方式,它可以保证滤波器的相位响应是线性的。线性相位形式的代码如下所示:
```matlab
% 设计FIR滤波器
b = fir1(20,0.5,'low');
% 线性相位形式实现
x = randn(1,100);
y = filter(b,1,x);
```
以上是MATLAB中实现FIR滤波器的常用结构方式。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![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)
![](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)