昆工张果DSP参考程序.docx
- 文档编号:28950814
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:15
- 大小:17.79KB
昆工张果DSP参考程序.docx
《昆工张果DSP参考程序.docx》由会员分享,可在线阅读,更多相关《昆工张果DSP参考程序.docx(15页珍藏版)》请在冰豆网上搜索。
昆工张果DSP参考程序
1-5参考程序(包含功能函数)
%-----实验1-----
%-----ex1_1-----
clearall;closeall;clc;
n=[0:
20];
x1=n.*(stepseq(0,0,20)-stepseq(10,0,20));
x2=10*exp(-0.3*(n-10)).*(stepseq(10,0,20)-stepseq(20,0,20));
x=x1+x2;
subplot(2,1,1);stem(n,x);
xlabel('n');ylabel('x(n)');axis([0,20,-1,11])
n=[-10:
9];
x=[5,4,3,2,1];
xtilde=x'*ones(1,4);
xtilde=(xtilde(:
))';
subplot(2,1,2);stem(n,xtilde);
xlabel('n');ylabel('xtilde(n)');axis([-10,9,-1,6])
set(gcf,'color','w');
%-----实验1-----
%-----ex1_2-----
clearall;closeall;clc;
n=-4:
2;x=[1,-2,4,6,-5,8,10];
[x21,n21]=sigshift(5*x,n,-5);
[x22,n22]=sigshift(4*x,n,-4);
[x23,n23]=sigadd(x21,n21,x22,n22);
[x2,n2]=sigadd(x23,n23,3*x,n);
subplot(2,1,1);stem(n2,x2);
xlabel('n');ylabel('x_1(n)');
n=-4:
2;x=[1,-2,4,6,-5,8,10];n4=-10:
10;
x41=2*exp(0.5*n4);x412=cos(0.1*pi*n4);
[x42,n42]=sigmult(x41,n4,x,n);
[x43,n43]=sigshift(x,n,-2);
[x44,n44]=sigmult(x412,n4,x43,n43);
[x4,n4]=sigadd(x42,n42,x44,n44);
subplot(2,1,2);stem(n4,x4);
xlabel('n');ylabel('x_2(n)');
set(gcf,'color','w');
%-----实验1-----
%-----ex1_3-----
clearall;closeall;clc;
n=-5:
30;b=[1,-1];a=[1];
x1=n.*(stepseq(0,-5,30)-stepseq(10,-5,30));
x2=(20-n).*[stepseq(10,-5,30)-stepseq(20,-5,30)];
[x2,n2]=sigadd(x1,n,x2,n);
subplot(2,1,1);stem(n2,x2);
xlabel('n');ylabel('x_2(n)');
h=filter(b,a,x2);
subplot(2,1,2);stem(n,h);
xlabel('n');ylabel('h(n)');
set(gcf,'color','w');
%-----实验2-----
%-----ex2_1_1-----
clearall;closeall;clc;
n=-5:
30;b=[1,-1];a=[1];
x1=n.*(stepseq(0,-5,30)-stepseq(10,-5,30));
x2=(20-n).*[stepseq(10,-5,30)-stepseq(20,-5,30)];
[x2,n2]=sigadd(x1,n,x2,n);
subplot(2,1,1);stem(n2,x2);
xlabel('n');ylabel('x_2(n)');
h=filter(b,a,x2);
subplot(2,1,2);stem(n,h);
xlabel('n');ylabel('h(n)');
set(gcf,'color','w');
clearall;closeall;clc;
t=0:
0.001:
1;xa=cos(20*pi*t);
Ts=0.01;N1=round(1/Ts);n1=0:
N1;x1=cos(20*pi*n1*Ts);
subplot(3,1,1);plot(t,xa,n1*Ts,x1,'o');
ylabel('x_1(n)');title('Samplingofx_a(t)usingTs=0.01');
Ts=0.05;N2=round(1/Ts);n2=0:
N2;x2=cos(20*pi*n2*Ts);
subplot(3,1,2);plot(t,xa,n2*Ts,x2,'o');
ylabel('x_2(n)');title('Samplingofx_a(t)usingTs=0.05');
Ts=0.1;N3=round(1/Ts);n3=0:
N3;x3=cos(20*pi*n3*Ts);
subplot(3,1,3);plot(t,xa,n3*Ts,x3,'o');
ylabel('x_3(n)');title('Samplingofx_a(t)usingTs=0.1');
set(gcf,'color','w');
%-----实验2-----
%-----ex2_1_2-----
clearall;closeall;clc;
t=0:
0.001:
1;xa=cos(20*pi*t);
xa=cos(20*pi*t);
Ts=0.01;N1=round(1/Ts);n1=0:
N1;x1=cos(20*pi*n1*Ts);
Ts=0.01;Fs=1/Ts;
xa1=x1*sinc(Fs*(ones(length(n1),1)*t-(n1*Ts)'*ones(1,length(t))));
subplot(3,1,1);plot(t,xa1);axis([0,1,-1.1,1.1]);
ylabel('x_a(t)');title('Reconstructionofx_a(t)whenTs=0.01');
Ts=0.05;Fs=1/Ts;
Ts=0.05;N2=round(1/Ts);n2=0:
N2;x2=cos(20*pi*n2*Ts);
xa2=x2*sinc(Fs*(ones(length(n2),1)*t-(n2*Ts)'*ones(1,length(t))));
subplot(3,1,2);plot(t,xa2);axis([0,1,-1.1,1.1]);
ylabel('x_a(t)');title('Reconstructionofx_a(t)whenTs=0.05');
Ts=0.1;Fs=1/Ts;
Ts=0.1;N3=round(1/Ts);n3=0:
N3;x3=cos(20*pi*n3*Ts);
xa3=x3*sinc(Fs*(ones(length(n3),1)*t-(n3*Ts)'*ones(1,length(t))));
subplot(3,1,3);plot(t,xa3);axis([0,1,-1.1,1.1]);
ylabel('x_a(t)');title('Reconstructionofx_a(t)whenTs=0.1');
set(gcf,'color','w');
%-----实验2-----
%-----ex2_1_3-----
clearall;closeall;clc;
t=0:
0.001:
1;xa=cos(20*pi*t);
Ts=0.01;N1=round(1/Ts);n1=0:
N1;x1=cos(20*pi*n1*Ts);
Ts=0.01;Fs=1/Ts;
xa1=spline(Ts*n1,x1,t);
subplot(3,1,1);plot(t,xa1);axis([0,1,-1.1,1.1]);
ylabel('x_a(t)');title('Reconstructionofx_a(t)whenTs=0.01');
Ts=0.05;N2=round(1/Ts);n2=0:
N2;x2=cos(20*pi*n2*Ts);
Ts=0.05;Fs=1/Ts;
xa2=spline(Ts*n2,x2,t);
subplot(3,1,2);plot(t,xa2);axis([0,1,-1.1,1.1]);
ylabel('x_a(t)');title('Reconstructionofx_a(t)whenTs=0.05');
Ts=0.1;N3=round(1/Ts);n3=0:
N3;x3=cos(20*pi*n3*Ts);
Ts=0.1;Fs=1/Ts;
xa3=spline(Ts*n3,x3,t);
subplot(3,1,3);plot(t,xa3);axis([0,1,-1.1,1.1]);
ylabel('x_a(t)');title('Reconstructionofx_a(t)whenTs=0.1');
set(gcf,'color','w');
%-----实验2-----
%-----ex2_2-----
clearall;closeall;clc;
nx=0:
9;x1=0.8.^nx;
ny=0:
2;x2=[101];
[ng,g]=SeqLConv(nx,x1,ny,x2);
subplot(221),
stem(nx,x1,'.');grid;axis([-0.59.5-0.21.2]);%stem-Plotdiscretesequencedata
xlabel('n');ylabel('x1(n)');title('序列x1(n)');
subplot(222),
stem(ny,x2,'.');grid;axis([-0.53.5-0.21.2]);
xlabel('n');ylabel('x2(n)');title('序列x2(n)');
subplot(212),
stem(ng,g,'.');grid;axis([-112-0.52]);
xlabel('n');ylabel('g(n)');title('线性卷积序列g(n)');
set(gcf,'color','w');
%-----实验2-----
%-----ex2_3-----
clearall;closeall;clc;
nx=0:
4;x=[12345];
ny=0:
5;y=[-130-2-21];
[nt1,t1]=SeqCirConv(nx,x,ny,y,6);
[nt2,t2]=SeqCirConv(nx,x,ny,y,10);
[nt3,t3]=SeqCirConv(nx,x,ny,y,12);
subplot(231),
stem(nx,x,'.');grid;axis([-15-0.25.2]);
xlabel('n');ylabel('x(n)');title('序列x(n)');
subplot(232),
stem(ny,y,'.');grid;axis([-18-2.23.2]);
xlabel('n');ylabel('y(n)');title('序列y(n)');
subplot(233),
stem(nt1,t1,'.');grid;axis([-18-15.210]);
xlabel('n');ylabel('t5(n)');title('6点循环卷积');
subplot(234),
stem(nt2,t2,'.');grid;axis([-110-15.210]);
xlabel('n');ylabel('t9(n)');title('10点循环卷积');
subplot(235),
stem(nt3,t3,'.');grid;axis([-113-15.210]);
xlabel('n');ylabel('t12(n)');title('12点循环卷积');
subplot(236),
[ng,g]=SeqLConv(nx,x,ny,y);
stem(ng,g,'.');grid;axis([-113-15.210]);
xlabel('n');ylabel('g(n)');title('线性卷积序列g(n)');
set(gcf,'color','w');
%-----实验3-----
%-----ex3_1-----
clearall;closeall;clc;
x=[1,3,5,3,1];nx=0:
4;T=0.5;%给定原始数据
N=length(x);D=2*pi/(N*T);%求出序列长度及频率分辨率
k=floor((-(N-1)/2):
((N-1)/2));%求对称于零频率的FFT位置向量
X=fftshift(fft(x,N));%求对称于零频率的FFT序列值
subplot(2,1,1),plot(k*D,abs(X),'o:
')%画幅频特性图
title('幅频特性图');
subplot(2,1,2),plot(k*D,angle(X),'o:
')%画相频特性图
title('相频特性图');
set(gcf,'color','w');
%-----实验3-----
%-----ex3_2-----
clearall;closeall;clc;
Fs=80;%抽样频率
SignalNum=512;%信号点数
n=0:
3000;
x=cos(2*20*pi*n/Fs)+2*cos(2*21*pi*n/Fs);
x1=x(1:
SignalNum);
X1=fft(x1,2048);
subplot(211),plot(0:
SignalNum-1,x1);xlabel('n');ylabel('x(n)');title('时域波形');grid;
subplot(212),plot(abs(X1));xlabel('k');ylabel('|X(k)|');title('幅频特性');grid;
set(gcf,'color','w');
+++++++++++++++++++++++以下是调用的子函数++++++++++++++++++++++++++++
function[nt,t]=SeqCirConv(nx,x,ny,y,N)
nt=0:
N-1;
x1=[xzeros(1,N-length(x))];
y1=[yzeros(1,N-length(y))];
i=0:
N-1;
y1=y1(mod(-i,N)+1);
Y=zeros(N,N);
fork=1:
N
[nyy,yy]=SeqCShift(ny,y1,N,k-1);
Y(k,:
)=yy;
end
t=x1*Y';
function[nxc,xc]=SeqCShift(nx,x,N,n0)
[nx1,x1]=SeqZQYT(nx,x,N,2);
ifn0>N
n0=mod(n0,N);
end
ifn0<-N
n0=n0+N;
end
nxc=min(nx):
min(nx)+N-1;
ifn0>0
xc=x1(N-n0+1:
2*N-n0);
else
xc=x1(abs(n0)+1:
abs(n0)+N);
end
function[ng,g]=SeqLConv(nx,x,ny,y)
%%%函数说明%%%%
%%%x和y代表参与卷积运算的序列,对应的位置向量用nx和ny表示%%%%
%%%g代表线性卷积序列,对应的位置向量用ng表示%%%%
ng=min(nx)+min(ny):
max(nx)+max(ny);
g=conv(x,y);
function[ny,y]=SeqZQYT(nx,x,L,k)
%%%函数功能%%%%
%%%将序列x(n)以L为周期进行周期延拓,自x(n)的起点始给出k个周期%%%%
N=length(nx);
ny=min(nx):
k*L+min(nx)-1;y=zeros(1,k*L);
fori=0:
k*L-1
ifL==N
y(i+1)=x(mod(i,L)+1);
end
ifL>N
x1=[xzeros(1,L-N)];
y(i+1)=x1(mod(i,L)+1);
end
if(L
x2=[x(1:
N-L)+x(L+1:
N)x(N-L+1:
L)];
y(i+1)=x2(mod(i,L)+1);
end
ifL<=N/2
ifmod(N,2)==1
xb=[xzeros(1,fix(N/2)-1)];
else
xb=[xzeros(1,N/2)];
end
x3=xb(1:
L);
ifmod(N,L)==0
fort=1:
N/L-1
x3=x3+xb(1+t*L:
(t+1)*L);
end
else
fort=1:
fix(N/L)
x3=x3+xb(1+t*L:
(t+1)*L);
end
end
y(i+1)=x3(mod(i,L)+1);
end
end
function[y,n]=sigadd(x1,n1,x2,n2)
%implementsy(n)=x1(n)+x2(n)
%——————————————————
%[y,n]=sigadd(x1,n1,x2,n2)
%y=sumsequenceovern,whichincludesn1andn2
%x1=firstsequenceovern1
%x2=secondsequenceovern2(n2canbedifferentfromn1)
%
n=min(min(n1),min(n2)):
max(max(n1),max(n2));%durationofy(n)
y1=zeros(1,length(n));y2=y1;%initialization
y1(find((n>=min(n1))&(n<=max(n1))==1))=x1;%x1withdurationofy
y2(find((n>=min(n2))&(n<=max(n2))==1))=x2;%x2withdurationofy
y=y1+y2;%sequenceaddition
function[y,n]=sigmult(x1,n1,x2,n2)
%implementsy(n)=x1(n)*x2(n)
%——————————————————
%[y,n]=sigmult(x1,n1,x2,n2)
%y=productsequenceovern,whichincludesn1andn2
%x1=firstsequenceovern1
%x2=secondsequenceovern2(n2canbedifferentfromn1)
%
n=min(min(n1),min(n2)):
max(max(n1),max(n2));%durationofy(n)
y1=zeros(1,length(n));y2=y1;%initialization
y1(find((n>=min(n1))&(n<=max(n1))==1))=x1;%x1withdurationofy
y2(find((n>=min(n2))&(n<=max(n2))==1))=x2;%x2withdurationofy
y=y1.*y2;
function[y,n]=sigshift(x,m,n0)
%implementsy(n)=x(n-n0)
%——————————————————
%[y,n]=sigshift(x,m,n0)
%
n=m+n0;y=x;
function[x,n]=stepseq(n0,n1,n2)
%Generatesx(n)=u(n-n0);n1<=n<=n2
%——————————————————
%[x,n]=stepseq(n0,n1,n2)
%
n=[n1:
n2];x=[(n-n0)>=0];
%---------实验四-------
%---------Ex4_1--------
%---------脉冲响应不变法--------------
wp=0.2*pi;ws=0.3*pi;
Fs=4000;T=1/Fs
Wp=wp/T;Ws=ws/T;
alpha_p=2;alpha_s=40;
[c,d]=aft_butt(Wp,Ws,alpha_p,alpha_s);
[b,a]=impinvar(c,d,Fs);
[H,W]=freqz(b,a);
%---------画出幅度响应曲线-------------
subplot(2,1,1);plot(W*Fs/2/pi,abs(H));
xlabel('频率/Hz');ylabel('幅值');grid;
%---------画出相位响应曲线-------------
subplot(2,1,2);plot(W*Fs/2/pi,angle(H));
xlabel('频率/Hz');ylabel('相位');grid;
%---------实验四-------
%---------Ex4_2--------
%---------双线性变换法----------------
wp=0.2*pi;ws=0.3*pi;
Fs=4000;T=1/Fs
Wp=(2/T)*tan(wp/2);
Ws=(2/T)*tan(ws/2);
alpha_p=2;alpha_s=40;
[c,d]=aft_butt(Wp,Ws,alpha_p,alpha_s);
[b,a]=bilinear(c,d,Fs);
[H,W]=freqz(b,a);
%---------画出幅度响应曲线-------------
subplot(2,1,1);plot(W*Fs/2/pi,abs(H));
xlabel('频率/Hz');ylabel('幅值');grid;
%---------画出相位响应曲线-------------
subplot(2,1,2);plot(W*Fs/2/pi,angle(H));
xlabel('频率/Hz');ylabel('相位');grid;
%------设计Butterworth低通滤波器-------------
function[b,a]=aft_butt(Wp,Ws,alpha_p,alpha_s)
N=ceil(log10((10^(alpha_p/10)-1)/(10^(alpha_s/10)-1))/(2*log10(Wp/Ws)));
fpr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 昆工张果 DSP 参考 程序