MATLAB 信号与系统-响应与抽样

文章目录

      • 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); 

MATLAB 信号与系统-响应与抽样_第1张图片

2.离散信号绘制

离散信号


% 离散信号绘图

c = 2;
d = 0.8;
k = -5:5;
y = c*d.^k;
stem(k,y);

MATLAB 信号与系统-响应与抽样_第2张图片

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)');         % 设置横纵坐标标签

MATLAB 信号与系统-响应与抽样_第3张图片

4.求解系统冲激响应和阶跃响应

微分方程


% MATLAB 求解系统冲激响应和阶跃响应
a = [7 4 6];            % 构造系数向量
b = [1 1];
subplot(2,1,1);
impulse(b,a);           % 求系统冲激响应并作图
subplot(2,1,2);
step(b,a);              % 求系统阶跃响应并作图

MATLAB 信号与系统-响应与抽样_第4张图片

5.求解卷积运算(连续)

MATLAB 信号与系统-响应与抽样_第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)');

MATLAB 信号与系统-响应与抽样_第6张图片

6.求解离散系统零状态响应

MATLAB 信号与系统-响应与抽样_第7张图片


% 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]'); % 添加图例

MATLAB 信号与系统-响应与抽样_第8张图片

7.求解单位脉冲响应

3


% 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,'.');

MATLAB 信号与系统-响应与抽样_第9张图片

8.求解卷积运算(离散)

5


% 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]');

MATLAB 信号与系统-响应与抽样_第10张图片

9.MATLAB 求解系统响应(频域)

MATLAB 信号与系统-响应与抽样_第11张图片


% 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') % 添加图例

MATLAB 信号与系统-响应与抽样_第12张图片

10.实现Sa信号的采样与恢复

11


% 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;

MATLAB 信号与系统-响应与抽样_第13张图片

你可能感兴趣的:(MATLAB,笔记)