1、数字信号处理实验 实验一、离散时间信号和系统 实验目的: 1. 熟悉MATLAB的软件环境,学习MATLAB的编程方法 2. 学习离散时间典型信号及其运算的Matlab实现 3. 学习离散时间系统的Matlab实现并掌握求解系统对输入的响应方法 实验原理: 1. 典型序列 l 单位抽样序列 l 单位阶跃序列 l 实数指数序列 l 复数指数序列 l 正余弦序列 2. 序列的运算 l 信号加 l 信号乘 l 改变比例 l 位移 l 折叠 l 卷积运算 3. 系统的实现及响应的求解 差分方程: 差分方程在Matlab中:y(n)=filter(b,a,
2、x) 实验内容: 1、典型序列的实现 impseq(n0,n1,n2) stepseq(n0,n1,n2) a.^n exp((a+bj)*n) sin or cos 2、序列的运算 sigadd(x1,n1,x2,n2) sigmult(x1,n1,x2,n2) a*x sigshift(x,m,n0) sigfold(x,n) 3、 系统的实现及响应的求解 单位脉冲序列δ(n-1) n = [-3:3]; % 生成位置向量 x = [(n-1) == 0];
3、 % 生成单个脉冲序列 stem(n,x); axis([-3,3,0,1.5]); % 标示坐标 单位阶跃序列 u (n-1) n = [-3:3]; % 生成位置向量 x = [(n+1) >= 0]; % 生成阶跃序列 stem(n,x); axis([-3,3,0,1.5]); 矩形序列生成函数 function [x,n] = rectseq(n0,n1,n2,N) % 单位矩形序列生成函数 % 调用
4、方式 [x,n] = rectseq(n0,n1,n2,N) n = [n0:n2]; % 生成位置向量 x = [(n-n1) >= 0&((n1+N-1)-n) >= 0]; % 生成矩形脉冲序列 矩形序列 [x,n] = rectseq(-3,-1,4,5); stem(n,x); axis([-3,5,0,1.5]); 实指数序列 n = [0:10]; % 生成位置向量 x = (0.6).^n; % 生成实指数序列
5、 stem(n,x); axis([0,10,0,1.5]); 正弦序列 3sin(0.1πn+π/3) n = [0:1:20]; % 生成位置向量 x = 3*sin(0.1*pi*n+pi/3); % 生成正弦序列 stem(n,x); axis([0,20,-4,4]); 复指数序列 n = [-2:10]; x = exp((0.2-0.5j)*n); % 复指数序列 subplot(1,2,1), stem(n
6、real(x)); %用空心圆画点 line([-5,10], [0,0]); % 画横坐标 subplot(1,2,2), stem(n,imag(x),'filled'); %用实心圆画点 % line([-5,10], [0,0]) 序列的能量 conj求共轭复数 sum求总和 E = sum(x.*conj(x)); abs求幅值 sum求总和 E = sum(abs(x).^2); 完成下列题目的matlab实现 A. n
7、[-5:5]; %生成位置向量 x1=[(n+2)==0]; %生成单位脉冲序列 x2=[(n-4)==0]; %生成单位脉冲序列 x=2*x1-x2; subplot(3,1,1) stem(n,x); axis([-5,5,-1.5,2.5]); %标示坐标 title('x(n)=2δ(n+2)-δ(n-4)'); xlabel('n');ylabel('x(n)');
8、B. n =[0:20]; %生成位置向量 x1=[(n>=0&n<10)]; %生成矩形脉冲序列 x2=[(n>=10&n<20)]; %生成矩形脉冲序列 x=n.*x1+10*exp(-0.3*(n-10)).*x2; subplot(3,1,2) stem(n,x); axis([0,20,0,11]); %标示坐标 title('x(n)=n[u(n)-u(n-10)]+10ex
9、p(-0.3*(n-10))[u(n-10)-u(n-20)]'); xlabel('n');ylabel('x(n)'); C. n = [0:50]; %生成位置向量 w=normrnd(0,1); %生成具有零均值及单位方差的高斯随机序列 x=cos(0.04*pi*n)+0.2*w; subplot(3,1,3) stem(n,x); axis([0,50,-2,2]); title('x(n)=cos(0.04πn)+0.2ω(n)'); xlabel('
10、n');ylabel('x(n)'); A. b=[1];a=[1,-1,0.9]; x=impseq(0,-20,100); %生成单位脉冲序列 n=[-20:100]; %生成位置向量 h=filter(b,a,x); %差分方程系数 subplot(2,1,1) stem(n,h); axis([-20,100,-1.1,1.1]); %标示坐标 title('Impulse Response'); xlabel('n');ylabel(
11、'h(n)'); B. b=[1];a=[1,-1,0.9]; x=stepseq(0,-20,100); %生成单位阶跃序列 s=filter(b,a,x); %差分方程系数 subplot(2,1,2); stem(n,s); axis([-20,100,-0.5,2.5]); %标示坐标 title('Step Response'); xlabel('n');ylabel('s(n)'); C. E=sum(abs(h)) if (E~=0) disp('该系统稳定') else disp('该系统不稳定') end E = 14.8337






