Subtract I0 from subsequent timetable values

2 vues (au cours des 30 derniers jours)
Poison Idea fan
Poison Idea fan le 17 Fév 2021
Commenté : Poison Idea fan le 17 Fév 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?

Réponse acceptée

Walter Roberson
Walter Roberson le 17 Fév 2021
measurement(valve_state == 0) = nan;
fillmissing(measurement, 'previous')
  3 commentaires
Walter Roberson
Walter Roberson le 17 Fév 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 le 17 Fév 2021
This is very helpful thank you! I couldn't figure out a way to isolate the run of 0's and what not.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur MATLAB dans Help Center et File Exchange

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by