内蒙工业大学数字信号处理实验一.docx
《内蒙工业大学数字信号处理实验一.docx》由会员分享,可在线阅读,更多相关《内蒙工业大学数字信号处理实验一.docx(17页珍藏版)》请在冰豆网上搜索。
内蒙工业大学数字信号处理实验一
实验一离散时间信号与系统的分析
实验二:
离散系统的时域分析
一.实验原理:
二:
实验程序:
1》单位冲击响应
1.用filter函数:
>>a1=[1,0.75,0.125];
b1=[1,-1];
n=0:
20;
x1=[1zeros(1,20)];
y1filter=filter(b1,a1,x1);
stem(n,y1filter);
title('y1filter');
xlabel('x');
ylabel('y');
>>
2.用conv函数
>>a1=[1,0.75,0.125];
b1=[1,-1];
x1=[1zeros(1,10)];
[h]=impz(b1,a1,10);
y1conv=conv(h,x1);
n=0:
19;
stem(n,y1conv,'filled')
>>
3.用impz函数
>>a1=[1,0.75,0.125];
b1=[1,-1];
impz(b1,a1,21);
1》单位阶跃响应
1.用filter函数
a1=[1,0.75,0.125];
b1=[1,-1];
n=0:
20;
x2=ones(1,21);
y1filter=filter(b1,a1,x2);
stem(n,y1filter);
title('y1filter_step');
xlabel('x');
ylabel('y');
2.用conv函数
>>a1=[1,0.75,0.125];
b1=[1,-1];
x2=ones(1,21);
[h,m]=impz(b1,a1,20);
y1=conv(h,x2);
y1conv=y1(1:
21);
n1=0:
20;
stem(n1,y1conv,'filled');
title('y1conv');
xlabel('n');
ylabel('y1[n]');
>>
3.用impz函数
>>a=[1,0.75,0.125];
b=[1-1];
impz(b,a)
>>
2》单位冲击响应
1.用filter函数:
>>a1=[1];
b1=[00.250.250.250.25];
n=0:
20;
x1=[1zeros(1,20)];
y1filter=filter(b1,a1,x1);
stem(n,y1filter);
title('y1filter');
xlabel('x');
ylabel('y');
>>
2.用conv函数
>>a1=[1];
b1=[00.250.250.250.25];
x1=[1zeros(1,10)];
[h]=impz(b1,a1,10);
y1conv=conv(h,x1);
n=0:
19;
stem(n,y1conv,'filled')
>>
3.用impz函数
>>a1=[1];
b1=[00.250.250.250.25];
impz(b1,a1,21);
2>>阶跃响应:
1.用filter得到的阶跃响应:
a2=[1];
b2=[0.250.250.250.25];
n=0:
20;
x2=ones(1,21);
y2=filter(b2,a2,x2);
stem(n,y2);
title('用filter得到的系统阶跃响应’);
xlabel('x2');
ylabel('y2');
2.用conv得到的阶跃响应:
a2=[1];
b2=[00.250.250.250.25];
x2=ones(1,21);
[h2]=impz(b2,a2,20);
y2=conv(h2,x2);
y3=y2(1:
21);
stem(y3);gird
title('用conv得到的系统阶跃响应');
xlabel('x3');
ylabel('y3');
3.用impz函数的阶跃响应:
a2=[1];
b2=[0.250.250.250.25];
y3=impz(b2,a2,25);
stem(y3);gird
title('用impz得到的系统阶跃响应');
xlabel('x3');
ylabel('y3');
实验三
一.实验原理:
二.实验程序及其结果:
两个线性卷积及其结果:
>>x1=[12345];
x2=[1212];
L=length(x1)+length(x2)-1;
XE=fft(x1,L);
HE=fft(x2,L);
y=ifft(XE.*HE);
n=0:
L-1;
stem(n,y);
xlable('n');
ylable('Amplitude');
title('xianxinjuanji');
5、6、7、8点圆周卷积程序及其结果:
functionyc=circonv2(x1,x2,N)
iflength(x1)>N
error('Nmustnotbelessthanlengthofx1')
end
iflength(x2)>N
error('Nmustnotbelessthanlengthofx2')
end
x1=[x1,zeros(1,N-length(x1))];
x2=[x2,zeros(1,N-length(x2))];
n=[0:
1:
N-1];
x2=x2(mod(-n,N)+1);
H=zeros(N,N);
forn=1:
1:
N
H(n,:
)=cirshiftd(x2,n-1,N);
end
yc=x1*H;
functiony=cirshiftd(x,m,N)
iflength(x)>N
error('lengthofxmustbelessthanN');
end
x=[x,zeros(1,N-length(x))];
n=[0:
1:
N-1];
y=x(mod(n-m,N)+1);﹪m文件
x1=[12345];
x2=[1212];
ycn1=circonv2(x1,x2,5);
ny1=[0:
1:
length(ycn1)-1];
subplot(2,2,1);
stem(ny1,ycn1);
title('5点长的循环卷积');
ycn2=circonv2(x1,x2,6);
ny2=[0:
1:
length(ycn2)-1];
subplot(2,2,2);
stem(ny2,ycn2);
title('6点长的循环卷积');
ycn3=circonv2(x1,x2,7);
ny3=[0:
1:
length(ycn3)-1];
subplot(2,2,3);
stem(ny3,ycn3);
title('7点长的循环卷积');
ycn4=circonv2(x1,x2,8);
ny4=[0:
1:
length(ycn4)-1];
subplot(2,2,4);
stem(ny4,ycn4);
title('8点长的循环卷积');
线性卷积通用程序:
x1=input(‘输入序列x1=’)
x2=input(‘输入序列x2=’)
L=length(x1)+length(x2)-1;
XE=fft(x1,L);
HE=fft(x2,L);
y=ifft(XE.*HE);
disp(‘线性卷积‘);
disp(y);
n=0:
L-1;
stem(n,y)
xlable(n,y);
ylable(‘Amplitude’);
title(‘线性卷积‘)
圆周卷积通用程序:
X1=input(‘输入序列x1=’)
X2=input(‘输入序列x2=’)
L=length(x1)+length(x2)-1)
y=circonv(x1,x2);
stem(y);
xlable(‘n’);
ylable(‘y’);
实验五
一.实验原理:
二.实验程序
1.零、极点图,幅度、频率响应和相位响应
num=[0,05280.07970.12950.12950.7970.0582];
den=[1-1.81072.4947-1.88010.9537-0.2336];
[z,p,k]=tf2zp(num,den);
m=abs(p);
disp('零点');disp(z);
disp('极点');disp(z);
disp('增益系数');disp(k);
sos=zp2sos(z,p,k);
disp('二阶节点');
disp(real(sos));
subplot(2,1,1);
zplane(num,den);
k=256;
w=0:
pi/k:
pi);
h=frepz(num,den,w);
subplot(2,2,3);
plot(w/pi,abs(h));grid
title('幅度谱')
xlable('\omega/\pi');
ylale('幅值');
subplot(2,2,4);
plot(w/pi,angle(h));grid
title('相位谱');
xlable('\omega/\pi');
ylable('弧度');
用tf2zp实现算法和分解为二阶: