5、已知某LSI系统,其单位冲激响应为h(n)=0.9°[u(n)-u(n-50)],求在输入序 列为x(n)=u(n+5)-u(n-10)时该系统的零状态响应。 (1)调用 stepseq()、sigshift()、sigmult()等函数来实现编程。 (2)绘制结果图。
时间: 2024-12-16 17:29:15 浏览: 13
H3C G5服务器LSI-9311-8i阵列卡UEFI启动模式下配置RAID详细指南
为了计算给定 LSI 系统的零状态响应,我们可以按照以下步骤使用 MATLAB 的 `stepseq()`、`sigshift()` 和 `sigmult()` 函数:
1. **定义系统函数**:
首先,我们手动创建一个离散系统函数,表示单位冲激响应 `h(n)`。由于题目给出了单位冲激响应的形式,我们可以直接使用这个信息:
```matlab
h = @(z) [0.9^(-z^-1); zeros(1, 48); 0];
```
这里 `h(z)` 是一个 Z-变换,代表了 `h(n)`,`z^-1` 表示 z 变换的一次逆变换。
2. **定义输入信号**:
输入信号 `x(n)` 已给出,它是一个阶跃函数的差分:
```matlab
input = stepseq('Period', 1, 'SamplesPerPeriod', 20);
```
`stepseq` 创建了一个周期性的阶跃信号,每 20 个样本周期一次。
3. **应用零状态响应**:
我们可以使用 `filter()` 或 `conv()` 函数结合 `stepseq()` 得到零状态响应 `y(n)`,但在这里我们使用 `ztransf()` 和 `invztransf()` 结合 `stepseq()` 来保持一致性:
```matlab
zinput = stepseq('Period', 1, 'SamplesPerPeriod', 20, 'SampleRate', 1); % 线性化输入
sys_zdomain = tf(h, [1]); % 将离散系统转换到Z域
zresponse = invztransf(sys_zdomain, zinput); % 在 Z 域下进行乘法运算
```
4. **绘制零状态响应图**:
最后,我们将响应转换回时间域并绘制:
```matlab
y = idata(zresponse); % 回归到时间域
time = 0:1:length(y)-1;
plot(time, y, '-o'); % 绘制线性和点
xlabel('Time (n)');
ylabel('Zero State Response (y(n))');
title('Zero State Response for Input x(n)');
```
**相关问题**:
1. 如何理解 Z-变换在这个过程中的作用?
2. `filter()` 和 `conv()` 函数在处理这种问题时有何区别?
3. 如何调整输入信号的周期或采样率?
阅读全文