clearclcN=512;%分段的长度,也就是做fft的长度h=[-0.00491000678664519,-0.0110940581309966,0.00410194747948791,0.0123959008767979,0.0260846944086577,0.0280068857178369,0.0117031929574722,-0.0282213909190478,-0.0862193226866780,-0.148431590883831,-0.196291852743501,0.785720061596288,-0.196291852743501,-0.148431590883831,-0.0862193226866780,-0.0282213909190478,0.0117031929574722,0.0280068857178369,0.0260846944086577,0.0123959008767979,0.00410194747948791,-0.0110940581309966,-0.00491000678664519];%系统冲击响应h(n)Frequence0 = 150; %单位:Hz Frequence1 = 200; %单位:HzFrequence2 = 2e3; %单位:HzSampleFre = 8e3; %单位:HzSampleLen = SampleFre; %采样点数%-------------------产生三路信号t = 0:1/SampleLen:1/SampleFre*(SampleLen-1);SignalData0 = sin(2*pi*Frequence0*t);SignalData0 = SignalData0(1:4096);SignalData1 = sin(2*pi*Frequence1*t);SignalData1 = SignalData1(1:4096);SignalData2 = sin(2*pi*Frequence2*t);SignalData2 = SignalData2(1:4096);x = SignalData0+SignalData1+SignalData2;Lenx=length(x);M=length(h);M1=M-1; %重叠部分的长度L=N-M1; %不重叠部分的长度h=fft(h,N);K=floor((Lenx+M1-1)/L)+1; %分的段数p=(K)*L-Lenx; %最后一段结尾补零数x1=[zeros(1,M1),x,zeros(1,p)]; %总的大矩阵Y=zeros(K,N); %保存结果矩阵初始化for k=0:K-1 xk=fft(x1(k*L+1:k*L+N)); Y(k+1,:)=(ifft(xk.*h));endZ=reshape(Y(:,M:N)',1,[]); %将保存结果矩阵转成一个行向量figure;plot(t(1:350),Z(1:350))ylim([-1.5, 1.5]);xlim([-0.001, 0.05]);title('高通滤波之后的波形')sound(x,SampleFre);
