How to repeat value from start in buffer function Matlab
    6 views (last 30 days)
  
       Show older comments
    
    Stephen john
 on 17 Aug 2022
  
    
    
    
    
    Edited: Walter Roberson
      
      
 on 17 Aug 2022
            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
      
      
 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.
Accepted Answer
  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)
0 Comments
More Answers (0)
See Also
Categories
				Find more on Creating and Concatenating Matrices in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

