已知系统的单位脉冲响应h(n)=0.9^n*u(n),输入信号为x(n)=R10(n),试用卷积法求解系统的输出y(n),并绘出n(x) ~n,h(n)~n 以及y (n)~n 的图像,用matlab画图
时间: 2024-11-06 12:19:57 浏览: 13
已知系统的单位脉冲响应 h(n) = 0.9^n * u(n),其中 u(n) 表示单位阶跃函数。输入信号 x(n) 是一个右移10位的单位阶跃序列,即 R10(n) = u(n+10)。
系统输出 y(n) 可以通过卷积运算得到,对于单位阶跃信号,其自相关函数等于自身,即 X(n) = R10(n) * R10(-n) = u(n)*u(n-10)。因此,我们有:
y(n) = h(n) * X(n) = (0.9^n * u(n)) * [u(n)*u(n-10)]
由于 u(n) * u(n-k) 是非零值只出现在 n=k 或 k=0 的地方,所以 y(n) 只会在 n=10 和 n=0 处有非零值,其他位置都是0,因为 h(n) 的指数项会使得所有其他位置都变为0。
现在我们来计算具体的数值:
1. 当 n >= 10 时,y(n) = 0.9^n * 1 (因为 u(n) = 1)
2. 当 n < 10 时,y(n) = 0 (因为 u(n-10) = 0)
由于这个是一个理论分析,实际绘制图像在MATLAB中可以使用`stem`函数表示离散点,而`plot`函数可以绘制线图。下面是如何在MATLAB中完成这个任务的大致步骤:
```matlab
% 定义变量范围和步长
n = 0:50; % 建立一个足够大的数组用于显示结果
h_values = 0.9 .^ n; % 计算h(n)
x_values = zeros(size(n)); % 初始化X(n)
x_values(11:end) = 1; % 设置x(n)的值
% 卷积操作(这里简化了,因为X(n)是离散点)
y_values = conv(h_values, x_values); % 实际上应该使用conv函数
% 绘制图像
figure;
subplot(3,1,1);
stem(n, h_values, 'filled');
xlabel('n');
ylabel('h(n)');
title('单位脉冲响应');
subplot(3,1,2);
stem(n, x_values, 'filled');
xlabel('n');
ylabel('x(n)');
title('输入信号');
subplot(3,1,3);
stem(n, y_values, 'filled');
xlabel('n');
ylabel('y(n)');
title('系统输出');
```
注意:由于MATLAB的`conv`函数默认对偶数长度的序列进行填充,如果n小于10,y(n)将被自动填充0。如果你想看到更精确的结果,你需要手动设置X(n)在n<10的情况下的值。
阅读全文