【数字信号处理】实验一 时域离散信号的产生及时域处理

本文档详细介绍了使用MATLAB进行数字信号处理的若干基本操作,包括序列相加、相乘、合成、截取、移位、周期延拓、离散系统响应及卷积计算等。通过实例展示了MATLAB语言在时域信号分析中的应用,有助于理解数字信号处理的基本概念和工具箱的使用方法。
摘要由CSDN通过智能技术生成

一、实验目的

了解 MATLAB 软件数字信号处理工具箱的初步使用方法。

掌握其简单的 MATLAB 语言进行简单的时域信号分析 。

二、实验内容

1. 序列相加和相乘

已知两序列 x1=[0,1,2,3,4,3,2,1,0];n1=[-2:6];x2=[2,2,0,0,0,-2,-2],n2=[2:8].求他们的和ya及乘积yp.

x1=[0,1,2,3,4,3,2,1,0];ns1=-2;
x2=[2,2,0,0,0,-2,-2];ns2=2;
nf1=ns1+length(x1)-1;nf2=ns2+length(x2)-1;
ny=min(ns1,ns2):max(nf1,nf2);
xa1=zeros(1,length(ny));xa2=xa1;
xa1(find((ny>=ns1)&(ny<=nf1)==1))=x1;
xa2(find((ny>=ns2)&(ny<=nf2)==1))=x2;
ya=xa1+xa2
yp=xa1.*xa2
subplot(4,1,1),stem(ny,xa1,'.')
subplot(4,1,2),stem(ny,xa2,'.')
line([ny(1),ny(end)],[0,0])
subplot(4,1,3),stem(ny,ya,'.')
line([ny(1),ny(end)],[0,0])
subplot(4,1,4),stem(ny,yp,'.')
line([ny(1),ny(end)],[0,0])

2. 序列的合成和截取

clear;close all
n0=input('输入序列起点:n0=');
N=input('输入序列长度:N=');
n1=input('输入位移:n1=');
n=n0:n1+N+5;
u=[(n-n1)>=0];
x1=[(n-n1)>=0]-[(n-n1-N)>=0]
x2=[(n>=n1)&(n<(N+n1))];
x3=exp(j*n*pi/8).*x2;
subplot(2,2,1);stem(n,x1,'.');
xlabel('n');ylabel('x1(n)');
axis([n0,max(n),0,1]);
subplot(2,2,3);stem(n,x2,'.');
xlabel('n');ylabel('x2(n)');
axis([n0,max(n),0,1]);
subplot(2,2,2);stem(n,real(x3),'.');
xlabel('n');ylabel('x3(n)的实部');
line([n0,max(n)],[0,0]);
axis([n0,max(n),-1,1]);
subplot(2,2,4);stem(n,imag(x3),'.');
xlabel('n');ylabel('x3(n)的虚部');
line([n0,max(n)],[0,0]);
axis([n0,max(n),-1,1]);

3. 序列的移位和周期延拓运算

clear;close all
N=24;M=8;
m=input('输入移位值:m=');
if (m<1|m>=N-M+1)
 fprintf('输入数据不在规定范围内!');
end
 n=0:N-1;
 x1=(0.8).^n; x2=[(n>=0)&(n<M)];
 xn=x1.*x2;
 xm=zeros(1,N);
 for k=m+1:m+M
 xm(k)=xn(k-m);
 end
 xc=xn(mod(n,8)+1);
 xcm=xn(mod(n-m,8)+1);
 subplot(2,2,1);stem(n,xn,'.');
 xlabel('n');ylabel('xn');
 axis([0,length(n),0,1]);
 subplot(2,2,2);stem(n,xm,'.');
 xlabel('n');ylabel('x(n-m)');
 axis([0,length(n),0,1]);
 subplot(2,2,3);stem(n,xc,'.');
 xlabel('n');ylabel('x(mod(n,g))');
 axis([0,length(n),0,1]);
 subplot(2,2,4);stem(n,xcm,'.');
 xlabel('n');ylabel('x(mod(n-m,g))');
 axis([0,length(n),0,1]);

12

4. 离散系统对几种常用信号的响应

clear;close all;
N=64;n=0:N-1;m=10;
B=0.0003738*conv([1,1],conv([1,1],conv([1,1],...
 conv([1,1],conv([1,1],[1,1])))))
A=conv([1,-1.2686,0.7051],conv([1,-1.0106,0.3583],...
 [1,-0.9044,0.2155]))
x1=[n==0];
y1=filter(B,A,x1);
x2=[(n-m)==0];
y2=filter(B,A,x2);
x3=[n>=0];
y3=filter(B,A,x3);
x4=[(n>=0)&(n<32)];
y4=filter(B,A,x4);
x5=exp(j*pi*n/8);
y5=filter(B,A,x5);
subplot(3,2,1),stem(n,y1,'.')
xlabel('n'),ylabel('y1(n)');
axis([0,N,-0.05,0.15]);
subplot(3,2,2),stem(n,y2,'.')
xlabel('n'),ylabel('y2(n)');
axis([0,N,-0.05,0.15]);
subplot(3,2,3),stem(n,y3,'.')
xlabel('n'),ylabel('y3(n)');
axis([0,N,0,0.6]);
subplot(3,2,4),stem(n,y4,'.')
xlabel('n'),ylabel('y4(n)');
axis([0,N,-0.1,0.6]);
subplot(3,2,5),stem(n,real(y5),'.')
xlabel('n'),ylabel('Re[y5(n)]');
axis([0,N,-1,1]);
subplot(3,2,6),stem(n,imag(y5),'.')
xlabel('n'),ylabel('Im[y5(n)]');
axis([0,N,-1,1])

5. 系统线性性质验证

clear;close all;
N=64;n=0:N-1;m=20;
B=1;A=[1,-0.8];
x1=0.8.^n;
x=[(n>=0)&(n<32)];
x1=x1.*x;
y1=filter(B,A,x1);
x2=[(n-m)==0];
y2=filter(B,A,x2);
x3=5*x1+3*x2;
y3=filter(B,A,x3);
y=5*y1+3*y2;
subplot(2,2,1),stem(n,y1,'.')
xlabel('n'),ylabel('y1(n)');
axis([0,N,0,2])
subplot(2,2,2),stem(n,y2,'.')
xlabel('n'),ylabel('y2(n)')
axis([0,N,0,1])
subplot(2,2,3),stem(n,y3,'.')
xlabel('n'),ylabel('y3(n)')
axis([0,N,0,10])
subplot(2,2,4),stem(n,y,'.')
xlabel('n'),ylabel('y4(n)')
axis([0,N,0,10])

6. 离散序列的卷积计算

n1=0:19;
x12=[(n1>=0&n1<20)];     %生成矩阵序列R20(n)
x1=0.9.^n1;  
x1n=x1.*x12;
n11=0:9;
h1n=[(n11>=0&n11<10)];       %得到h1(n) 
h2n=h1n;
n2=0:(19+5);
x2n=zeros(1,25);
for i=1:20
    x2n(i+5)=x1n(i);       %由x1(n)得到x2(n)
end
dt=1;
y1n=conv(x1n,h1n);          %求x1(n)与h1(n)的卷积y1(n)
t1=dt*([1:length(y1n)]-1);       %建立横坐标轴t1
y2n=conv(x2n,h2n);
t2=dt*([1:length(y2n)]-1);
subplot(3,2,1);stem(n1,x1n,'.');ylabel('x1(n)');
subplot(3,2,2);stem(n2,x2n,'.');ylabel('x2(n)');
subplot(3,2,3);stem(n11,h1n,'.');ylabel('h1(n)');
subplot(3,2,4);stem(n11,h2n,'.');ylabel('h2(n)');
subplot(3,2,5);stem(t1,y1n,'.');ylabel('y1(n)');
subplot(3,2,6);stem(t2,y2n,'.');ylabel('y2(n)');

三、实验中遇到的问题及解决过程

  1. 在输入程序的时候不够仔细,出现了拼写错误,把tel写成了tle导致查错的时候没有发现错误在哪里
  2. 没有注意到中英文输入法的标点符号是有区别的,导致最后程序执行的时候出现了好几个错误
  3. 输入程序的时候,对于中括号和小括号的配对没有注意,导致执行时出现了错误

四、实验提问

  1. 每行末尾……是什么意思?代表这行内容还没有结束。
  2. = =是什么意思?等于的意思。
  3. filter是什么意思?滤波器。

五、实验总结

通过本次实验,使我初步认识里数字信号处理实验的一些基本操作。

了解了MATLAB软件数字信号处理工具箱的初步使用,并掌握了简单的MATLAB语言进行简单的时域信号分析。

通过基本技能训练内容对这些知识掌握的更加熟练,更加深刻。

附:程序清单

📎数字信号处理.zip

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值