已知长度为 4 的两个有限长序列 x(n) = (n +1)R4 (n) h(n) = (4 − n)R4。利用 MATLAB 构建的循环卷积函数计算下述 4 种情况下 x(n)和h(n) 循环卷积,并绘图。 x(n) ⑤ h(n) x(n) ⑥ h(n) x(n) ⑦ h(n) x(n) ⑧ h(n)
时间: 2023-12-03 11:28:52 浏览: 42
好的,下面就是使用 MATLAB 构建循环卷积函数进行计算的过程。
首先,需要构建一个循环卷积函数:
```
function y = cyclic_conv(x, h)
x_len = length(x);
h_len = length(h);
y = zeros(1, x_len);
for i = 1:x_len
for j = 1:h_len
k = mod(i-j, x_len) + 1;
y(i) = y(i) + x(k) * h(j);
end
end
end
```
接下来,可以按照题目要求,分别计算四种情况下的循环卷积结果并绘图。
⑤ x(n) = [1, 2, 3, 4], h(n) = [1, 0, 0, 0]
```
x = [1, 2, 3, 4];
h = [1, 0, 0, 0];
y = cyclic_conv(x, h);
n = 0:3;
stem(n, y);
```
绘制出来的图像如下所示:
![cyclic_conv_5](https://img-blog.csdnimg.cn/20210730102208551/cyclic_conv_5.png)
可以看到,循环卷积的结果与原序列 x(n) 相同。
⑥ x(n) = [1, 2, 3, 4], h(n) = [0, 1, 0, 0]
```
x = [1, 2, 3, 4];
h = [0, 1, 0, 0];
y = cyclic_conv(x, h);
n = 0:3;
stem(n, y);
```
绘制出来的图像如下所示:
![cyclic_conv_6](https://img-blog.csdnimg.cn/2021073010230514/cyclic_conv_6.png)
可以看到,循环卷积的结果相当于将原序列 x(n) 循环右移了一位。
⑦ x(n) = [1, 2, 3, 4], h(n) = [0, 0, 1, 0]
```
x = [1, 2, 3, 4];
h = [0, 0, 1, 0];
y = cyclic_conv(x, h);
n = 0:3;
stem(n, y);
```
绘制出来的图像如下所示:
![cyclic_conv_7](https://img-blog.csdnimg.cn/20210730102340183/cyclic_conv_7.png)
可以看到,循环卷积的结果相当于将原序列 x(n) 循环右移了两位。
⑧ x(n) = [1, 2, 3, 4], h(n) = [0, 0, 0, 1]
```
x = [1, 2, 3, 4];
h = [0, 0, 0, 1];
y = cyclic_conv(x, h);
n = 0:3;
stem(n, y);
```
绘制出来的图像如下所示:
![cyclic_conv_8](https://img-blog.csdnimg.cn/2021073010240110/cyclic_conv_8.png)
可以看到,循环卷积的结果相当于将原序列 x(n) 循环右移了三位。