Info

Questa domanda è chiusa. Riaprila per modificarla o per rispondere.

concatonate time axis using a loop

1 visualizzazione (ultimi 30 giorni)
Jordan Gallacher
Jordan Gallacher il 4 Ott 2016
Chiuso: MATLAB Answer Bot il 20 Ago 2021
I have a time axis which keeps resetting due to drop outs in the logging e.g.
t = 0,1,2,3,4,5,0,1,2,3,4,5,6,7,8,9,10,0,1,2,3,4,5,6,7,8,9,10,0,1,2 and so on....
What is the most efficient piece of code to generate the new time vector so that the zeros continue on from the last time value before the dropout.
t = 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30
Thanks!
Jordan.
  1 Commento
Adam
Adam il 5 Ott 2016
Modificato: Adam il 5 Ott 2016
I assume your real problem is a little more complex than the example you posted because to get that time vector you can just do
t = 0:numel(t) - 1;

Risposte (1)

Marc Jakobi
Marc Jakobi il 5 Ott 2016
This should do it:
t = [0,1,2,3,4,5,0,1,2,3,4,5,6,7,8,9,10,0,1,2,3,4,5,6,7,8,9,10,0,1,2];
idx = find(ismember(t, 0));
for i = 2:length(idx)-1
t(idx(i):idx(i+1) - 1) = t(idx(i):idx(i+1) - 1) + idx(i) - 1;
end
t(idx(end):end) = t(idx(end):end) + idx(end) - 1;
  2 Commenti
Jordan Gallacher
Jordan Gallacher il 5 Ott 2016
Hi Marc,
Thanks! What about if the zero was not exactly zero and say 4 microseconds i.e. just a value less than the last time value before the logging reset?
Thanks,
Jordan.
Marc Jakobi
Marc Jakobi il 5 Ott 2016
Modificato: Marc Jakobi il 5 Ott 2016
Then I would I would replace
idx = find(ismember(t, 0));
with
idx = find([0, diff(t)] <= 0);

Questa domanda è chiusa.

Community Treasure Hunt

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

Start Hunting!

Translated by