circonvf.m

来自「matlab的一些基础程序」· M 代码 · 共 30 行

M
30
字号
function [y]=circonvf(x1,x2,N)

n1=[0:1:length(x1)-1];
k1=[0:1:length(x1)-1];
WN1=exp(-j*2*pi/length(x1));%Wn factor
nk1=n1'*k1;
WNnk1=WN1.^nk1; 
Xk1=x1*WNnk1; 
n2=[0:1:length(x2)-1];
k2=[0:1:length(x2)-1];
WN2=exp(-j*2*pi/length(x2));%Wn factor
nk2=n2'*k2;
WNnk2=WN2.^nk2; 
Xk2=x2*WNnk2; 
if length(Xk1)>N 
   error('N must be >= the length of x1')
end
%check for length of x2
if length(Xk2)>N 
   error('N must be >= the length of x2')
end
x1=[Xk1 zeros(1,N-length(Xk1))];
x2=[Xk2 zeros(1,N-length(Xk2))];
m=[0:1:N-1];
x2=x2(mod(-m,N)+1);
H=zeros(N,N); 
for n=1:1:N;
   H(n,:)=cirshftt(Xk2,n-1,N);
end;
y=x1*H';

⌨️ 快捷键说明

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