MATLAB_数字信号处理_02_时域离散系统

SYSU_SECE_数字信号处理_01

时域离散系统

实验目的:

  1. 进一步了解离散时间序列始于的基本运算
  2. 了解MATLAB语言进行离散序列运算的常有函数,掌握离散序列运算的编写方法
  3. 加深对离散线性移不变(LSI)系统基本理论的理解,明确差分方程与系统函数之间的关系
  4. 初步了解用MATLAB语言进行离散时间系统研究的基本方法
  5. 掌握求解离散时间系统冲激响应和阶跃响应程序的编写方法,了解常用子函数

在这里插入图片描述

figure(1)
n0=-4;n1=4;
k0=-3;k1=4;
n=n0:n1;
nt=length(n);
nk0=abs(k0-n0)+1;
nk1=abs(k1-n0)+1;
x=zeros(1,nt);
x(nk0)=1;x(nk1)=2;
stem(n,x,'filled');
xlabel('时间(n)');ylabel('幅度x(n)');title('题目1-(1)')
%part2
figure(2)
n0=-4;n1=4;
n=n0:n1;
k0=2;k1=-2;
nt=length(n);
nk0=abs(k0-n0)+1;
nk1=abs(k1-n0)+1;
x=[zeros(1,nk0-1),ones(1,nt-nk0+1)]+[zeros(1,nk1-1),ones(1,nt-nk1+1)];
stem(n,x,'filled');
xlabel('时间(n)');ylabel('幅度x(n)');title('题目1-(2)');
%part3
figure(3)
n=1:23;
xn1=exp(-n/16);
xn2=5*sin(2*pi*n/10);
yn=xn1.*xn2;
stem(n,yn,'filled');
xlabel('时间(n)');ylabel('幅度x_1(n) × x_2(n)');title('题目1-(3)');

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

figure(4)
n=-20:20;
xn=n.*sin(n);
stem(n,xn,'filled');
xlabel('时间(n)');ylabel('幅度 x(n)');
axis([0,20,-20,20]);%给定显示范围
figure(5)
yn1=(n-3).*sin(n-3);
stem(n,yn1,"filled");
xlabel('时间(n)');ylabel('幅度 y_1(n)=x(n-3)');
axis([0,20,-20,20]);
figure(6)
yn2=fliplr(xn);
stem(n,yn2,"filled");
xlabel('时间(n)');ylabel('幅度 y_2(n)=x(-n)');
axis([0,20,-20,20]);
figure(7)
yn3=-fliplr(xn);
stem(n,yn3,"filled");
xlabel('时间(n)');ylabel('幅度 y_3(n)=-x(n)');
axis([0,20,-20,20]);
figure(8)
yn4=(-n+3).*sin(-n+3);
stem(n,yn4,"filled");
xlabel('时间(n)');ylabel('幅度 y_4(n)=x(-n+3)');
axis([0,20,-20,20]);
figure(9)
yn5=(n/2).*sin(0.5*n);
stem(n,yn5,"filled");
xlabel('时间(n)');ylabel('幅度 y_5(n)=x(n/2)');
axis([0,20,-20,20]);

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

%part1---solution1
figure(10)
a=[1,0,-0.5,0,0];
b=[1,-1,1,0,0.25];
N=32;
n=0:N-1;
hn=impz(b,a,n);
gn=dstep(b,a,n);
subplot(2,1,1),stem(n,hn,"filled");
%axis([0,N,-1.2*min(hn),1.2*max(hn)])
xlabel('n');ylabel('h(n)');title('题目3(1)-使用impz和dstep子函数求解系统函数的冲激响应');
subplot(2,1,2),stem([1:31],gn,"filled");
xlabel('n');ylabel('g(n)');title('题目3(1)-使用impz和dstep子函数求解系统函数的阶跃响应');
%part1---solution2
figure(11)
a=[1,0,-0.5,0,0];
b=[1,-1,1,0,0.25];
x01=0;y01=0;N=32;%采样点数
xi=filtic(b,a,y01,x01);
n=0:N-1;
x1=[n==0];
hn=filter(b,a,x1,xi);
subplot(2,1,1),stem(n,hn,"filled");
xlabel('n');ylabel('h(n)');title('题目3(1)-使用filtic和filter子函数求解系统函数的冲激响应');
x2=[n>=0];
gn=filter(b,a,x2,xi);
subplot(2,1,2),stem(n,gn,"filled");
xlabel('n');ylabel('g(n)');title('题目3(1)-使用filtic和filter子函数求解系统函数的冲激响应');
%%%==============================================================================
%part2---solution1
figure(12)
a=[1,0.5,-0.5,-1,-0.5,1];
b=[1,0,0,0,0,0];
N=32;
n=0:N-1;
hn=impz(b,a,n);
gn=dstep(b,a,n);
subplot(2,1,1),stem(n,hn,"filled");
%axis([0,N,-1.2*min(hn),1.2*max(hn)])
xlabel('n');ylabel('h(n)');title('题目3(2)-使用impz和dstep子函数求解系统函数的冲激响应');
subplot(2,1,2),stem([1:31],gn,"filled");
xlabel('n');ylabel('g(n)');title('题目3(2)-使用impz和dstep子函数求解系统函数的阶跃响应');
%part2---solution2
figure(13)
a=[1,0.5,-0.5,-1,-0.5,1];
b=[1,0,0,0,0,0];
x01=0;y01=0;N=32;%采样点数
xi=filtic(b,a,y01,x01);
n=0:N-1;
x1=[n==0];
hn=filter(b,a,x1,xi);
subplot(2,1,1),stem(n,hn,"filled");
xlabel('n');ylabel('h(n)');title('题目3(2)-使用filtic和filter子函数求解系统函数的冲激响应');
x2=[n>=0];
gn=filter(b,a,x2,xi);
subplot(2,1,2),stem(n,gn,"filled");
xlabel('n');ylabel('g(n)');title('题目3(2)-使用filtic和filter子函数求解系统函数的冲激响应');

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

%part1---solution1
figure(14)
a=[1,0,0,0,0,0,0];
b=[1,0,0,0,0,0,1];
N=32;
n=0:N-1;
hn=impz(b,a,n);
gn=dstep(b,a,n);
subplot(2,1,1),stem(n,hn,"filled");
%axis([0,N,-1.2*min(hn),1.2*max(hn)])
xlabel('n');ylabel('h(n)');title('题目4(1)-使用impz和dstep子函数求解系统函数的冲激响应');
subplot(2,1,2),stem([1:31],gn,"filled");
xlabel('n');ylabel('g(n)');title('题目4(1)-使用impz和dstep子函数求解系统函数的阶跃响应');
%part1---solution2
figure(15)
a=[1,0,0,0,0,0,0];
b=[1,0,0,0,0,0,1];
x01=0;y01=0;N=32;%采样点数
xi=filtic(b,a,y01,x01);
n=0:N-1;
x1=[n==0];
hn=filter(b,a,x1,xi);
subplot(2,1,1),stem(n,hn,"filled");
xlabel('n');ylabel('h(n)');title('题目4(1)-使用filtic和filter子函数求解系统函数的冲激响应');
x2=[n>=0];
gn=filter(b,a,x2,xi);
subplot(2,1,2),stem(n,gn,"filled");
xlabel('n');ylabel('g(n)');title('题目4(1)-使用filtic和filter子函数求解系统函数的冲激响应');
%%%==============================================================================
%part2---solution1
figure(16)
a=[2,-3,1];
b=[0,1,0];
N=32;
n=0:N-1;
hn=impz(b,a,n);
gn=dstep(b,a,n);
subplot(2,1,1),stem(n,hn,"filled");
%axis([0,N,-1.2*min(hn),1.2*max(hn)])
xlabel('n');ylabel('h(n)');title('题目4(2)-使用impz和dstep子函数求解系统函数的冲激响应');
subplot(2,1,2),stem([1:31],gn,"filled");
xlabel('n');ylabel('g(n)');title('题目4(2)-使用impz和dstep子函数求解系统函数的阶跃响应');
%part2---solution2
figure(17)
a=[2,-3,1];
b=[0,1,0];
x01=0;y01=0;N=32;%采样点数
xi=filtic(b,a,y01,x01);
n=0:N-1;
x1=[n==0];
hn=filter(b,a,x1,xi);
subplot(2,1,1),stem(n,hn,"filled");
xlabel('n');ylabel('h(n)');title('题目4(2)-使用filtic和filter子函数求解系统函数的冲激响应');
x2=[n>=0];
gn=filter(b,a,x2,xi);
subplot(2,1,2),stem(n,gn,"filled");
xlabel('n');ylabel('g(n)');title('题目4(2)-使用filtic和filter子函数求解系统函数的冲激响应');

在这里插入图片描述
在这里插入图片描述

% 实验中用到的MATLAB函数
% zeros(1,n) 创建一个由0组成的1×n向量
% ones(1,n) 创建一个由1组成的1×n向量
% abs(n)  返回n的绝对值
% [h,t]=impz(b,a,n)  求解数字系统的冲激响应h,取样点数由n确定
% [h,t]=dstep(b,a,n)  求解数字系统的阶跃响应g,取样点数由n确定
% filter 对数字系统的输入信号进行滤波处理  y=filter(b,a,x) 
% filtic 为filter函数选择初始条件  z=filtic(b,a,y)
% fliplr 对矩阵行元素进行左右翻转

上述题目基本全部改编/出自自西安电子科技大学出版社出版的《数字信号处理实验(MATLAB版)》,可以在其中找到原理部分,我们理论课使用的教材也是西电的:《数字信号处理》(第四版)高西全 丁玉美

声明:不保证代码的正确性,只是提供一种思路……

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SmallC1oud

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值