这是我用matlab 做的第一个有实际意义的程序。
首先这个循环卷积的理论基础:
x=[x(0),x(1),.....x(n)]为输入序列,首先生成矩阵X=[x(0)x(n),x(n-1).............,x(2),x(1);
x(1)x(n),x(n-1).............,x(3),x(2);
.............
x(n-1)x(n-2),x(n-3).............,x(0),x(n);
x(n)x(n-1),x(n-2).............,x(1),x(0);]
接着同理对输入序列h=[h(0),.....h(n)];生成一样矩阵H
那么x和h的循环卷积就等于Yc=X*H;
至于具体的理论推导,可以参见数字信号处理书籍。
好了,接着给出我的程序吧。主要核心程序是生成矩阵程序。
function H=produce1(h)
[x,y]=size(h);
%生成下三角
for i=1:y
j=i;
n=i;
k=1;