www.pudn.com > DSP3_MATLAB.rar > exa031101_conv.m


%---------------------------------------------------------------------------- 
% exa031101_conv.m, for example 3.11.1 
%  
% 不使用“fftfilt"文件,自己编程实现一个长序列和一个短序列的卷积。 
%---------------------------------------------------------------------------- 
clear; 
 
% 生成滤波器系数h和混有高斯白噪的正弦信号x 
h=fir1(10,0.3,hanning(11)); 
N=500;p=0.05;f=1/16; 
u=randn(1,N)*sqrt(p);% 
s=sin(2*pi*f*[0:N-1]); 
x=u(1:N)+s; 
 
% 将x分为长度为L的小段 
L=20;M=length(h); 
y=zeros(1,N+M-1); 
tempy=zeros(1,M+L-1); 
tempX=zeros(1,L); 
for k=0:N/L-1 
   tempx(1:L)=x(k*L+1:(k+1)*L); 
   tempy=conv(tempx,h); 
   y=y+[zeros(1,k*L),tempy,zeros(1,N-(k+1)*L)]; 
end 
 
subplot(211);plot(x) 
subplot(212);plot(y(1:N))