www.gusucode.com > signal 案例源码程序 matlab代码 > signal/ContinuousOverlappingBuffersExample.m
%% Continuous Overlapping Buffers % Create a buffer containing 100 frames, each with 11 samples. %% data = buffer(1:1100,11); %% % Take the frames (columns) in the matrix |data| to be the sequential % outputs of a data acquisition board sampling a physical signal: % |data(:,1)| is the first D/A output, containing the first 11 signal % samples; |data(:,2)| is the second output, containing the next 11 signal % samples, and so on. % % You want to rebuffer this signal from the acquired frame size of 11 to a % frame size of 4 with an overlap of 1. Call |buffer| to operate on each % successive input frame, using the |opt| parameter to maintain consistency % in the overlap from one buffer to the next. % % Set the buffer parameters. Specify a value of -5 for |y(1)|. The % carryover vector is empty initially. n = 4; p = 1; opt = -5; z = []; %% % Now repeatedly call |buffer|, each time passing in a new signal frame % (column) from |data|. Overflow samples (returned in |z|) are carried over % and prepended to the input in the subsequent call to |buffer|. for i = 1:size(data,2) x = data(:,i); [y,z,opt] = buffer([z;x],n,p,opt); end %% % Here's what happens during the first four iterations. % % <<../refa2e63.gif>> %% % The size of the output matrix, |y|, can vary by a single column from one % iteration to the next. This is typical for buffering operations with % overlap or underlap.