DSP1.docx
《DSP1.docx》由会员分享,可在线阅读,更多相关《DSP1.docx(19页珍藏版)》请在冰豆网上搜索。
DSP1
实验一熟悉MATLAB环境
一、实验目的
(1)熟悉MATLAB的主要操作命令。
(2)学会简单的矩阵输入和数据读写。
(3)掌握简单的绘图命令。
(4)用MATLAB编程并学会创建函数。
(5)观察离散系统的频率响应。
二、实验内容
认真阅读附录,在MATLAB环境下重新做一遍附录中的例子,体会各条命令的含义。
在熟悉了MATLAB基本命令的基础上,完成以下实验。
上机实验内容:
数组的加、减、乘、除和乘方运算。
输入A=[1234],B=[3456],求C=A+B;
D=A-B;E=A.*B;F=A./B;G=A.^B;并用Stem语句画出A、B、C、D、E、F、G。
A:
B:
C=A+B
D=A-B
E=A*B
F=A./B
G=A.^B
并用Stem语句画出A、B、C、D、E、F、G。
(2)用MATLAB实现下列序列:
n=[0:
1:
15];
x1=(0.8).^n;
figure;stem(x1);
n=[0:
1:
15];
x2=(0<=n<=15).*exp(0.2*n+j*3*n);
figure;stem(x2);
n=[0:
1:
15];
x3=(0<=n<=15).*(3*cos(0.125*pi*n+0.2*pi)+2*sin(0.25*pi*n+0.1*pi));
figure;stem(x3);
d)将(c)中的x(n)扩展为以16为周期的函数
绘出四个周期。
n=[0:
1:
63];
x4=(0<=n<=63).*(3*cos(0.125*pi*rem(n,16)+0.2*pi)+2*sin(0.25*pi*rem(n,16)+0.1*pi));
figure;stem(x4);
e)将(c)中的x(n)扩展为以10为周期的函数
,绘出四个周期。
n=[0:
1:
39];
x5=(0<=n<=39).*(3*cos(0.125*pi*rem(n,10)+0.2*pi)+2*sin(0.25*pi*rem(n,10)+0.1*pi));
figure;stem(x5);
(3)
产生并绘出下列序列的样本:
n=0:
3;
x=[1-135]
x1=circshift(x,[0,-2]);
x2=circshift(x,[0,1]);
x3=2*x1-x2-2*x;
stem(x3);
x=[1-135];
x1=zeros(1,4);
x2=zeros(1,4);
fork=1:
5
forn=0:
3
x3=circshift(x,[0,-k])
t=n.*x3;
x1=x1+t;
end
x2=x2+x1;
end
stem(x2)
(4)绘出下列时间函数的图形,对x轴、y轴以及图形上方均须加上适当的标注
t=0:
0.001:
10;
x=sin(2*pi*t);
plot(t,x)
title('x=sin(2*pi*t)');
xlabel('x');
ylabel('t');
t=0:
0.01:
4;
x1=cos(100*pi*t);
x2=sin(pi*t);
x=x1.*x2;
plot(t,x)
title('x=cos(100*pi*t)*sin(pi*t)');
xlabel('x');
ylabel('t');
(5)编写函数
实现
,绘出该函数的图形,起点为n1,终点为n2。
functionstepshift(n0,n1,n2)%单位阶跃序列,n0为时移量
n=n1:
n0-1;%n1、n2为序列的起止序列号
nn=length(n);
x=zeros(1,nn);%n0前信号赋值为0
stem(n,x,'fill')%绘出n1~n0-1的波形(0值)
holdon
k=n0:
n2;
kk=length(k);
x=ones(1,kk);%n0后信号赋值为1
stem(k,x,'fill')%绘出n0~n0的波形(1值)
holdoff
axis([n1,n2,0,1.1])
title('单位阶跃序列')
运行程序后,在CommondWindows中输入stepshift(2,-2,15),
则得到平移后序列图形如下:
(6)给定一因果系统
求出并绘制H(z)的幅频响应与相频响应。
clearall;
k=64;
b=[1sqrt
(2)];
a=[1-0.670.9];
w=0:
pi/k:
pi;
h=freqz(b,a,w);
subplot(2,1,1);plot(abs(h))
gridon
subplot(2,1,2);plot(angle(h))
gridon
(7)计算序列
和序列
的离散卷积,并作图表示卷积结果。
A=[8-2-123]
B=[23-1-1];
C=conv(A,B)
plot(C)
(8)求以下差分方程所描述系统的单位脉冲响应
clearall;
N=51;
a=[1-2];
b=[10.1-0.62];
x1=[1zeros(1,N-1)];
n=0:
1:
N-1;
h=filter(a,b,x1);
stem(n,h)
axis([-153-2.51.2])
三、思考题
(1)比较实验内容第
(2)题中d)和e)两小题的结果,试说明对于周期性信号,应当如何采样,d能保证周期扩展后与原信号保持一致?
答:
采样周期要大于等于原信号周期
(2)对于有限长序列,如何用MATLAB计算其DTFT?
fs=1000
t=0:
1/fs:
0.6;
f1=100;
f2=300;
x=sin(2*pi*f1*t)+sin(2*pi*f2*t);
subplot(711)
plot(x);
title('f1(100hz)\f2(300hz)的正弦信号,初相0')
xlabel('序列(n)')
gridon
number=512
y=fft(x,number);
n=0:
length(y)-1;
f=fs*n/length(y);
subplot(713)
plot(f,abs(y));
title('f1\f2的正弦信号的fft(512点)')
xlabel('频率hz')
gridon
x=x+randn(1,length(x));
subplot(715)
plot(x);
title('原f1\f2的正弦信号(含随机噪声)')
xlabel('序列(n)')
gridon
y=fft(x,number);
n=0:
length(y)-1;
f=fs*n/length(y);
subplot(717)
plot(f,abs(y));
title('原f1\f2的正弦信号(含随机噪声)的fft(512点)')
xlabel('频率hz')
gridon
(3)对于由两个子系统级联或并联的系统,如何用MATLAB计算它们的幅频响应与相频响应?
答:
级联转换为直接型:
cas2dir并联转换为直接型:
par2dir然后用freqz()就行了。