在MATLAB中,可以使用以下步骤来编程绘制离散系统的响应图:
时域响应
对于线性时不变(LTI)离散系统,输出可以通过输入与单位冲激响应的卷积来表示。
使用MATLAB的`conv`函数进行卷积计算。
示例代码如下:
```matlab
clear;
dt = input('输入时间间隔 dt=');
x = 2 * ones(1, fix(10 / dt)); % 输入信号
h = exp(-0.5 * [0 : fix(10 / dt)] * dt); % 单位冲激响应
y = conv(x, h); % 卷积计算输出
t = dt * ([1 : length(y)] - 1); % 时间向量
plot(t, y); % 绘制时域响应图
grid on;
```
零输入响应
对于离散LTI系统,可以使用`dinitial`函数计算零输入响应。
示例代码如下:
```matlab
a = [-0.6, -0.8; 0.9, 0];
b = [1; 0];
c = [2, 7];
d = ;
x0 = [1; 0];
t0 = 0 : 0.1 : 20;
[y, x, n] = dinitial(a, b, c, d, x0, t0);
plot(n, y); % 绘制零输入响应图
xlabel('n');
ylabel('y[n]');
title('LTI系统零输入响应曲线');
grid on;
```
传递函数
可以通过构造系统的传递函数来分析和绘制系统的响应图。
示例代码如下:
```matlab
num = ;
den = [2, 3, 1];
tf = tf(num, den);
step(tf); % 绘制阶跃响应
```
使用GUI工具箱
MATLAB提供了图形用户界面(GUI)工具箱,可以方便地绘制各种响应图。
示例代码如下:
```matlab
% 打开GUI工具箱
from controlgui import *;
% 绘制BODE图
plot(tf);
title('Bode Diagram');
grid on;
```
系统辨识
可以通过系统辨识的方法得到系统的状态方程,并进一步绘制响应图。
示例代码如下:
```matlab
clear all;
close all;
clc;
load dryer2; % 加载示例系统
warning off;
A = [-1.5, -2; 1, 0];
B = [0.5; 0];
C = [0, 1];
D = 0;
sys = ss(A, B, C, D); % 状态方程
sysd = c2d(sys, 1); % 转换为离散系统
sysd_tf = tf(sysd); % 传递函数
u = u2(1 : 100); % 控制量
x = [0; 0]; % 系统初始状态
for i = 1 : 100
x(:, i + 1) = sysd.A * x(:, i) + sysd.B * u(i);
y(i) = sysd.C * x(:, i) + sysd.D * u(i);
end
plot(y, 'r-*'); % 绘制系统响应图
```
通过以上步骤和代码示例,可以在MATLAB中编程绘制离散系统的时域响应、零输入响应、传递函数响应以及通过系统辨识得到的响应图。根据具体需求选择合适的方法进行绘制。