编制程序,包括产生输入信号、单位脉冲响应序列的子程序,用filter函数或conv函数求解系统输出响应的主程序。程序中要有绘制信号波形的功能。
时间: 2023-12-06 09:39:52 浏览: 161
quantonghezuishaoxiangweixitong,matlab conv2函数源码,matlab源码网站
以下是一个MATLAB程序,包括产生输入信号、单位脉冲响应序列的子程序,用filter函数或conv函数求解系统输出响应的主程序。程序中也包括绘制信号波形的功能。
```matlab
% 产生输入信号的子程序
function x = input_signal(Ts, t)
% Ts为采样周期,t为时间序列
f1 = 5; f2 = 10; f3 = 20; % 三个正弦波频率
A1 = 1; A2 = 0.75; A3 = 0.5; % 三个正弦波幅值
x = A1*sin(2*pi*f1*t) + A2*sin(2*pi*f2*t) + A3*sin(2*pi*f3*t);
end
% 产生单位脉冲响应序列的子程序
function h = impulse_resp(Ts, t)
% Ts为采样周期,t为时间序列
h = [0 0.2 0.4 0.6 0.8 1 0.8 0.6 0.4 0.2]; % 单位脉冲响应序列
end
% 主程序
Ts = 0.01; % 采样周期
t = 0:Ts:1; % 时间序列
x = input_signal(Ts, t); % 产生输入信号
h = impulse_resp(Ts, t); % 产生单位脉冲响应序列
y1 = filter(h, 1, x); % 用filter函数求解系统输出响应
y2 = conv(x, h, 'same'); % 用conv函数求解系统输出响应
% 绘制信号波形
subplot(3,1,1); plot(t, x); title('输入信号');
subplot(3,1,2); plot(t, y1); title('filter函数求解输出响应');
subplot(3,1,3); plot(t, y2); title('conv函数求解输出响应');
```
在这个程序中,我们首先定义了两个子程序:`input_signal`和`impulse_resp`。前者产生了一个由三个正弦波组成的输入信号,后者产生了一个长度为10的单位脉冲响应序列。
然后,在主程序中,我们定义了采样周期`Ts`和时间序列`t`,并调用了`input_signal`和`impulse_resp`来产生输入信号和单位脉冲响应序列。接下来,我们用`filter`函数和`conv`函数分别求解了系统输出响应,并将结果存储在`y1`和`y2`中。
最后,我们使用`subplot`函数绘制了输入信号和两种方法求解的系统输出响应的波形图。其中,`subplot(3,1,1)`表示将画布分为三行一列,当前绘制的是第一行的图形。`title`函数用于设置图形的标题。
阅读全文