Subtract I0 from subsequent timetable values

2 Ansichten (letzte 30 Tage)
Poison Idea fan
Poison Idea fan am 17 Feb. 2021
Kommentiert: Poison Idea fan am 17 Feb. 2021
I have a timetable with different variables corresponding to measurements made with an instrument. One of the variables is a logic variable, "Valve State" that indicates whether the measurement is meant for a background or is a sample measurement.
How could I iterate through the time table and find the most recent variable with "Valve State" == 1 and use that for the calculation on the next chunk of rows which have a "Valve State" == 0?

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 17 Feb. 2021
measurement(valve_state == 0) = nan;
fillmissing(measurement, 'previous')
  3 Kommentare
Walter Roberson
Walter Roberson am 17 Feb. 2021
If you do
VSR = reshape(valve_state, 1, []); %need a row
mask = VSR == 0;
start0 = strfind([0 mask], [0 1]);
stop0 = strfind([mask 0], [1 0]);
Now start0(K) marks the start of a run of 0's and stop0(K) marks the end of the same run. Under the assumption that the first datapoint is a 1 rather than 0, you would use the datapoint at start0(K)-1 . So perhaps something like
basevalue = measurement;
if start0(1) == 1
basevalue(1:stop0(1)) = something; %this is the case where the valve started 0
start0(1) = []; stop0(1) = [];
end
for K = 1 : length(start0)
basevalue(start0(K):stop0(K)) = basevalue(start0(K)-1);
end
Poison Idea fan
Poison Idea fan am 17 Feb. 2021
This is very helpful thank you! I couldn't figure out a way to isolate the run of 0's and what not.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu MATLAB finden Sie in Help Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by