资源描述
数字信号处理实验
实验一、离散时间信号和系统
实验目的:
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,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]; % 生成单个脉冲序列
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) % 单位矩形序列生成函数
% 调用方式 [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; % 生成实指数序列
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,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 =[-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)');
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)]+10exp(-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('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('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
展开阅读全文