使用 MATLAB 编程求解如下系统的单位样值响应H(Z)=(1+z^(-1)+z^(-2))^2,求解激励x(n)cos(πn/3)时,响应y(n)从n=0到n=50的结果
时间: 2024-01-01 10:05:27 浏览: 68
根据题目给出的系统传递函数 H(z),可以求出其差分方程:
```
y(n) + y(n-1) + y(n-2) + 2y(n-1)z^(-1) + 2y(n-2)z^(-2) + y(n-1)z^(-2) + y(n-2)z^(-1) + y(n-2)z^(-2) = x(n)
```
将激励信号 x(n) = cos(πn/3) 代入,得到完整的差分方程:
```
y(n) + y(n-1) + y(n-2) + 2y(n-1)z^(-1) + 2y(n-2)z^(-2) + y(n-1)z^(-2) + y(n-2)z^(-1) + y(n-2)z^(-2) = cos(πn/3)
```
可以使用 Matlab 中的 `filter` 函数来求解该系统的单位样值响应。具体步骤如下:
1. 由于 H(z) 是一个二次多项式,可以使用 Matlab 中的 `conv` 函数来计算其平方:
```
b = [1 1 1];
h = conv(b, b);
```
2. 使用 `impz` 函数计算系统的单位样值响应:
```
n = 51; % 要计算的样值个数
[h, t] = impz(h, 1, n);
```
3. 生成激励信号 x(n):
```
n = 0:n-1;
x = cos(pi*n/3);
```
4. 使用 `filter` 函数计算系统的响应:
```
y = filter(h, 1, x);
```
5. 绘制结果:
```
stem(0:n-1, y);
xlabel('n');
ylabel('y(n)');
title('System response to x(n) = cos(\pin/3)');
```
完整的 Matlab 代码如下:
```
b = [1 1 1];
h = conv(b, b);
n = 51;
[h, t] = impz(h, 1, n);
n = 0:n-1;
x = cos(pi*n/3);
y = filter(h, 1, x);
stem(0:n-1, y);
xlabel('n');
ylabel('y(n)');
title('System response to x(n) = cos(\pin/3)');
```
阅读全文