文章目录
- 1.连续信号的绘制
- 2.离散信号绘制
- 3.求解系统响应(时域)
- 4.求解系统冲激响应和阶跃响应
- 5.求解卷积运算(连续)
- 6.求解离散系统零状态响应
- 7.求解单位脉冲响应
- 8.求解卷积运算(离散)
- 9.MATLAB 求解系统响应(频域)
- 10.实现Sa信号的采样与恢复
1.连续信号的绘制
% 连续信号绘制
b = 5;
a = 0.8;
t = 0:0.001:5;
x = b*exp(-a*t.*sin(pi*t));
plot(t,x);
2.离散信号绘制
% 离散信号绘图
c = 2;
d = 0.8;
k = -5:5;
y = c*d.^k;
stem(k,y);
3.求解系统响应(时域)
% MATLAB 求解系统响应
sys = tf([1],[1 2 77]); % tf函数获得系统模型sys
t = 0:0.01:5; % 对时间t进行离散抽样
f = 10*sin(2*pi*t);
y = lsim(sys,f,t); % 求系统的零状态响应
plot(t,y); % 画图
xlabel('Time(sec)');
ylabel('y(t)'); % 设置横纵坐标标签
4.求解系统冲激响应和阶跃响应
% MATLAB 求解系统冲激响应和阶跃响应
a = [7 4 6]; % 构造系数向量
b = [1 1];
subplot(2,1,1);
impulse(b,a); % 求系统冲激响应并作图
subplot(2,1,2);
step(b,a); % 求系统阶跃响应并作图
5.求解卷积运算(连续)
% 卷积的 MATLAB 求解
t11 = 0;t12 = 1;t21 = 0;t22 = 2;
t1 = t11:0.001:t12;
ft1 = 2*rectpuls(t1-0.5,1);
t2 = t21:0.001:t22;
ft2 = t2;
t3 = t11+t21:0.001:t12+t22; % 幅值为1,宽度为1,t1 = 0.5 点对称的方波信号
ft3 = conv(ft1,ft2);
ft3 = ft3*0.001;
plot(t3,ft3);
title('ft1(t)*ft2(t)');
6.求解离散系统零状态响应
% MATLAB 求解离散系统零状态响应
R = 51;
d = rand(1,R)-0.5; % 生成随机信号(噪音)
k = 0:R-1;
s = 2*k.*(0.9.^k);
f = s+d; % 输入信号
subplot(2,1,1);stem(k,f,'.');
legend('y[k]'); % 添加图例
M = 5; % 滤波器窗长
b = ones(M,1)/M;
a = 1;
y = filter(b,a,f); % filter 函数求解离散信号的零状态响应
% 其中a=[a0,a1,a2……],b=[b0,b1,b2……]分别是差分方程左右的系数向量,f为输入序列,y为系统零状态响应
subplot(2,1,2);stem(k,y,'.');
legend('f[k]'); % 添加图例
7.求解单位脉冲响应
% MATLAB 求解单位脉冲响应
k = 0:10;
a = [1 3 2];
b = [1];
h = impz(b,a,k);% impz 函数求解单位脉冲响应
% 其中a=[a0,a1,a2……],b=[b0,b1,b2……]分别是差分方程左右的系数向量,k为输出序列取值范围,h为系统单位脉冲响应
stem(k,h,'.');
8.求解卷积运算(离散)
% MATLAB 求解离散序列的卷积
k1 = 0:10; % x1 的变量取值
x1 = sin(k1);
k2 = 0:15; % x2 的变量取值
x2 = 0.8.^k2;
y = conv(x1,x2);% 计算卷积结果
subplot(3,1,1);stem(k1,x1);title('x1[k]');
subplot(3,1,2);stem(k2,x2);title('x2[k]');
subplot(3,1,3);stem(y);title('y[k]');
9.MATLAB 求解系统响应(频域)
% MATLAB 求解系统响应(频域)
t = 0:pi/100:4*pi;
b = [-1 1]; % 频率响应函数的分子
a = [1 1];% 频率响应函数的分母
ft = sin(t)+sin(3*t);% 输入信号
yt = lsim(b,a,ft,t);% 求解响应
plot(t,ft,'b');
hold on; % hold on 将该图保留,使它不被后面的图所覆盖
plot(t,yt,'r');
grid on; % 添加网格线
legend('ft','yt') % 添加图例
10.实现Sa信号的采样与恢复
% MATLAB 实现Sa信号的采样与恢复
B = 1; % 信号带宽
wc = B; % 滤波器截止频率
Ts = pi/B; % 采样间隔
ws = 2*pi/Ts; % 采样角频率
N = 100; % 滤波器时域采样点数
n = -N:N;
nTs = n.*Ts/5; % 采样数据的采样时间
fs = sinc(nTs/pi); % 函数的采样点
Dt = 0.005; % 恢复信号的采样间隔
t = -15:Dt:15; % 恢复信号的范围
fa = fs*Ts*wc/pi*sinc((wc/pi)*(ones(length(nTs),1)*t-nTs'*ones(1,length(t)))); % 信号重构
error = abs(fa-sinc(t/pi)); % 求重构信号与原信号的归一化误差
syms x;
subplot(4,1,1);fplot(sinc(x/pi),[-15,15]);title('原始信号:sinc(t/pi)');ylim([-1,1]);grid on;
subplot(4,1,2);stem(nTs,fs);title('Nyquist采样信号:sinc(nTs/pi)');xlim([-15,15]);ylim([-1,1]);
subplot(4,1,3);plot(t,fa);title('重构信号:fa');grid on;
subplot(4,1,4);plot(t,error);title('归一化误差:error');grid on;