实验二 线性卷积与循环卷积
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二线性卷积与循环卷积
(1)线性卷积
n=[0:1:3]
%N1=length(n);
%xnn=ones(1,N1);
xn=(n+1).*((n>=0)-(n>=4));
hn=(4-n).*((n>=0)-(n>=4));
subplot(311);
stem(n,xn,'.');
axis([0 6 0 6]);
title('x(n)=()');
subplot(312);
stem(n,hn,'.');
axis([0 6 0 6]);
title('h(n)');
yn=conv(xn,hn);
N2=[0:1:length(yn)-1]
subplot(313);
stem(N2,yn,'.');
axis([0 6 0 30])
title('y(n)=x(n)*h(n)');
x(n)=(n+1)R4(n)
0123456
h(n)=(4-n)R4(n)
0123456
y(n)=x(n)*h(n)
0123456
(2)循环卷积
n=[0:1:3]
N1=length(n);
xnn=ones(1,N1);
xn=(n+1).*xnn;
hn=(4-n).*xnn;
yln=conv(xn,hn);
ycn5=circonv(xn,hn,5); ycn6=circonv(xn,hn,6); ycn7=circonv(xn,hn,7); ycn8=circonv(xn,hn,8);
ny1=[0:1:length(yln)-1]; ny5=[0:1:length(ycn5)-1]; ny6=[0:1:length(ycn6)-1]; ny7=[0:1:length(ycn7)-1]; ny8=[0:1:length(ycn8)-1];
subplot(321);
stem(ny1,yln,'.');
title('yln');
axis([0 8 0 40]);
subplot(322);
stem(ny5,ycn5,'.');
title('5µãycn');
axis([0 8 0 40]);
subplot(323);
stem(ny6,ycn6,'.');
title('6µãycn');
axis([0 8 0 40]);
subplot(324);
stem(ny7,ycn7,'.');
title('7µãycn');
axis([0 8 0 40]);
subplot(325);
stem(ny8,ycn8,'.');
title('8µãycn');
axis([0 8 0 40]);
(3)fft 函数实现圆卷积
n=[0:1:3] N1=length(n); xnn=ones(1,N1); xn=(n+1).*xnn; hn=(4-n).*xnn; N1=length(xn); N2=length(hn); N=N1+N2-1; NN1=5; NN2=6; NN3=7; NN4=8; XK=fft(xn,N); HK=fft(hn,N); YK=XK.*HK;
x=0:N-1; yn=ifft(YK,N); subplot(321);
02468
yln
0246
8
5点ycn
02468
6点ycn
02468
7点ycn
8点ycn
stem(x,yn,'.');
axis([0 8 0 40]);
title('yln');
x=0:NN1-1;
yn=ifft(YK,NN1);
subplot(322);
stem(x,yn,'.');
axis([0 8 0 40]);
title('5µãycn');
x=0:NN2-1;
yn=ifft(YK,NN2);
subplot(323);
stem(x,yn,'.');
axis([0 8 0 40]);
title('6µãycn');
x=0:NN3-1;
yn=ifft(YK,NN3);
subplot(324);
stem(x,yn,'.');
axis([0 8 0 40]);
title('7µãycn');
x=0:NN4-1;
yn=ifft(YK,NN4);
subplot(325);
stem(x,yn,'.');
axis([0 8 0 40]);
title('8µãycn');
附:
function yc=circonv(x1,x2,N)
if length(x1)>N
error('N must not be less than length of x1'); end
if length(x2)>N
error('N must not be less than length of x2'); 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); for n=1:1:N
H(n,:)=cirshiftd(x2,n-1,N); end yc=x1*H';
function y=cirshiftd(x,m,N) if length(x)>N
error('length of x must be less than N'); end
x=[x,zeros(1,N-length(x))]; n=[0:1:N-1]; y=x(mod(n-m,N)+1);
02468
yln
0246
8
5点ycn
0246
86点ycn
02468
7点ycn
02468
8点ycn。