Subtract I0 from subsequent timetable values

1 回表示 (過去 30 日間)
Poison Idea fan
Poison Idea fan 2021 年 2 月 17 日
コメント済み: Poison Idea fan 2021 年 2 月 17 日
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 Center および File ExchangeMATLAB についてさらに検索

タグ

製品

Community Treasure Hunt

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

Start Hunting!

Translated by