⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cai1.m

📁 这个是我数字信号处理这门课的课程设计,文件包括用matlab编写的代码和设计报告.这个设计包括卷积演示程序、采样定理演示程序、模拟滤波器设计演示程序、设计切比雪夫I型低通滤波器、切比雪夫I型低通滤波器
💻 M
字号:
i=0;g=1;
while i==0
if g==1
    x1=input('请输入x1:');x2=input('请输入x2:');
end
disp('1、动态演示2序列的线性卷积')
disp('2、动态演示2序列的圆周卷积')
disp('3、验证时域卷机定理')
disp('4、退出')
    m=input('请选择菜单项目:');
while m==1
clear y6 y5 y4 y3 y2 y1 x11 x22 h  y
    p=length(x1);q=length(x2);n=p+q-1;
subplot(3,2,1)
a=0:1:p-1;
stem(a,x1)
title('x1(m)');
subplot(3,2,2)
a=0:1:q-1;
stem(a,x2)
title('x2(m)');
a=0:q-1;
y2(a+1)=x2(q-a);

for n=1:p+q-1
k=-q+n:1:-1+n;subplot(3,1,2)
stem(k,y2)
title('x2(n-m)');axis([-16,16,0,24]);
y=conv(x1,x2);
t=1:1:n
h(t)=y(t);
subplot(3,1,3)
t=0:n-1;
stem(t,h);
title('线性卷积y(n)')
axis([-16,16,0,24]);
pause(1)
end
disp('1、重新演示')
disp('2、返回主采单修改2序列的值')
disp('3、返回主菜单')
z=input('请选择,输入:')
if z==1
    m=1;
elseif z==2
    m=0;g=1;
else 
    m=0;g=0;
end

end
while m==2
N=input('请输入执行循环卷积的数N:'); 
clear y6 y5 y4 y3 y2 y1 x11 x22 h  
p=length(x1);q=length(x2);k=max(p,q);%p<q
if k>N
    if p<q&p<N
x11=[x1,zeros(1,N-p)];
n=0:1:N-1;
x22(n+1)=x2(n+1);
elseif p==q|p>N
    
n=0:1:N-1;
x11(n+1)=x1(n+1)
x22(n+1)=x2(n+1);
else disp('错误,x1的长度要比x2短')

end
subplot(3,2,1)
a=0:1:N-1;
stem(a,x11)
title('x1(m)');
subplot(3,2,2)
a=0:1:N-1;
stem(a,x22)
title('x2(m)');
a=0:N-2;
y2(1)=x22(1);
y2(a+2)=x22(N-a);
y3=[y2,y2];
for n=0:N-1
t=0:1:N-1;
y4(t+1)=y3(N+t+1-n);
subplot(3,1,2)
stem(t,y4);
title('x2(n-m)');axis([-16,16,0,24]);
y5=x11.*y4;
y6(n+1)=0;
v=length(y5);
for j=1:1:v
y6(n+1)=y5(j)+y6(n+1);
end
t=0:1:n;
subplot(3,1,3)
stem(t,y6);
title('y(n)')
axis([-16,16,0,24]);pause(1);
end
disp('1、重新演示,只改变N值')
disp('2、返回主采单修改2序列的值')
disp('3、返回主菜单')
z=input('请选择,输入:')
if z==1
    m=2;
elseif z==2
    m=0;g=1;
else 
    m=0;g=0;
end
else 
  clear y6 y5 y4 y3 y2 y1 x11 x22 h   
x11=[x1,zeros(1,N-p)];
x22=[x2,zeros(1,N-q)];
subplot(3,2,1)
a=0:1:N-1;
stem(a,x11)
title('x1(m)');
subplot(3,2,2)
a=0:1:N-1;
stem(a,x22)
title('x2(m)');
a=0:N-2;
y2(1)=x22(1);
y2(a+2)=x22(N-a);
y3=[y2,y2];
for n=0:N-1
t=0:1:N-1;
y4(t+1)=y3(N+t+1-n)
subplot(3,1,2)
stem(t,y4);
title('x2(n-m)');axis([-16,16,0,24]);
y5=x11.*y4;
y6(n+1)=0;
v=length(y5);
for j=1:1:v
y6(n+1)=y5(j)+y6(n+1);
end
t=0:1:n;
subplot(3,1,3)
stem(t,y6);axis([-16,16,0,24]);pause(1);
end
disp('1、重新演示,只改变N值')
disp('2、返回主采单修改2序列的值')
disp('3、返回主菜单')
z=input('请选择,输入:');
if z==1
    m=2;
elseif z==2
    m=0;g=1;
else 
    m=0;g=0;
end
end
end
while m==3
clear y6 y5 y4 y3 y2 y1 x11 x22 h 
   p=length(x1);q=length(x2);

n=0:1:p+q-2;
figure
y1=conv(x1,x2);
stem(n,y1)
axis([0,max(p+q-1),0,max(y1)])
title('直接线性卷积结果y1')
figure
X1=fft(x1,p+q-1);
X2=fft(x2,p+q-1);
Y2=X1.*X2;
y2=ifft(Y2,p+q-1);
stem(n,y2)
axis([0,max(p+q-1),0,max(y2)])
title('频域相乘结果的时域y2')

figure
X1=fft(x1,p+q-1);
X2=fft(x2,p+q-1);
Y2=X1.*X2;
stem(n,abs(Y2))
axis([0,max(p+q-1),0,max(abs(Y2))])
title('频域相乘得到的频域幅度特性|Y2|')
figure
y1=conv(x1,x2);
Y1=fft(y1,p+q-1);
stem(n,abs(Y1))
axis([0,max(p+q-1),0,max(abs(Y1))])
title('直接线性卷积y1的频域幅度特性|Y1|')

disp('1、返回主采单修改2序列的值')
disp('2、返回主菜单')
z=input('请选择,输入:');
if z==1
    m=0;g=1;
else 
    m=0;g=0;
end
end
while m==4
  i=1;
  m=0;
end
end
disp('本程序结束')

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -