www.gusucode.com > matlab 案例源码 matlab代码程序 > matlab/FilterDataInSectionsExample.m
%% Filter Data in Sections % Use initial and final conditions for filter delays to filter data in sections, especially if memory limitations are a consideration. % Copyright 2015 The MathWorks, Inc. %% % Generate a large random data sequence and split it into two segments, % |x1| and |x2|. x = randn(10000,1); x1 = x(1:5000); x2 = x(5001:end); %% % The whole sequence, |x|, is the vertical concatenation of |x1| and |x2|. %% % Define the numerator and denominator coefficients for the rational transfer function, % % $$ H(z) = \frac{b(1)+b(2)z^{-1}}{a(1)+a(2)z^{-1}} = % \frac{2+3z^{-1}}{1+0.2z^{-1}}. $$ b = [2,3]; a = [1,0.2]; %% % Filter the subsequences |x1| and |x2| one at a time. Output the final % conditions from filtering |x1| to store the internal status of the filter at the end of the first segment. [y1,zf] = filter(b,a,x1); %% % Use the final conditions from filtering |x1| as initial conditions to % filter the second segment, |x2|. y2 = filter(b,a,x2,zf); %% % |y1| is the filtered data from |x1|, and |y2| s the filtered data from % |x2|. The entire filtered sequence is the vertical concatenation of |y1| % and |y2|. %% % Filter the entire sequence simultaneously for comparison. y = filter(b,a,x); isequal(y,[y1;y2])