Subtract I0 from subsequent timetable values

2 次查看(过去 30 天)
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?

采纳的回答

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

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 MATLAB 的更多信息

标签

产品

Community Treasure Hunt

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

Start Hunting!

Translated by