How to repeat value from start in buffer function Matlab

1 view (last 30 days)
Hello Everyone, I hope you are doing well. I have the data shape 1x66656
I apply buffer function to get every 1000 samples,
Now the shape of the matrix is 1000x67. The remaining 344 value from 656 value are replaced by 0, Instead of 0 i want to repeat the matrix from the start to complete 1000 samples.
buffered = buffer(incomingdata, 1000);
  2 Comments
Jan
Jan on 17 Aug 2022
What exactly does "repeat the matrix from the start" mean? The first value? The first 344 elements?
Providing a small example would clarify this.
Stephen john
Stephen john on 17 Aug 2022
@Jan yes repeat the first 344 values, The buffer function place 0's to complete 1000 samples.
The should be generic using buffer function, for examples if i have 250 samples the buffer function place 750 zeros to complete 1000 samples. I want to to repeat value in place of 0's to complete 1000 samples

Sign in to comment.

Accepted Answer

Walter Roberson
Walter Roberson on 17 Aug 2022
Edited: Walter Roberson on 17 Aug 2022
buffer() does not have any option for that.
The following code would be quite a bit shorter if we knew for sure that the incomingdata signal was already at least as large as the group size (1000)
%demo data
incomingdata = repmat((1:39).', 51, 1);
%the work
groupsize = 1000;
sig = incomingdata(:);
if isempty(sig)
error('signal is empty, cannot buffer it');
end
sigsize = numel(sig);
fullcopies = floor(groupsize ./ sigsize);
sig = repmat(sig, 1+fullcopies, 1);
sigsize = numel(sig);
leftover = mod(sigsize, groupsize);
if leftover ~= 0
sig = [sig; sig(1:groupsize-leftover)];
end
buffered = buffer(sig, groupsize);
%cross-check
buffered(end-30:end, end)
ans = 31×1
20 21 22 23 24 25 26 27 28 29

More Answers (0)

Products


Release

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!