How to repeat value from start in buffer function Matlab

1 visualización (últimos 30 días)
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 comentarios
Jan el 17 de Ag. de 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 el 17 de Ag. de 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

Iniciar sesión para comentar.

Respuesta aceptada

Walter Roberson
Walter Roberson el 17 de Ag. de 2022
Editada: Walter Roberson el 17 de Ag. de 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');
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)];
buffered = buffer(sig, groupsize);
buffered(end-30:end, end)
ans = 31×1
20 21 22 23 24 25 26 27 28 29

Más respuestas (0)




Community Treasure Hunt

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

Start Hunting!

Translated by