我需要幫助來開發以下資料提取的一些邏輯。當 C1 為“1”時,我需要將 C2 列切換為“1”。然后,當 C1 為“-1”時,C2 列切換為“0”。C1 切換(1 和 -1)之間的 C2 中的所有行都需要變為“1”。
Date C1 C2
'24-Dec-1999' 0 0
'31-Dec-1999' 1 1
'07-Jan-2000' 0 1
'14-Jan-2000' 0 1
'21-Jan-2000' 0 1
'28-Jan-2000' 0 1
'04-Feb-2000' -1 0
'11-Feb-2000' 0 0
'18-Feb-2000' 0 0
'25-Feb-2000' 0 0
我使用了以下內容,但是它只更改了 31-DEC-1999 和 04-FEB-2000 的第一個和最后一個條目。如何使 C2 中(2000 年 1 月 7 日至 2000 年 1 月 28 日)之間的條目也列為“1”?
C2(C1==1)=1;
C2(C1==-1)=0;
uj5u.com熱心網友回復:
更新
最簡單的方法是計算累積總和
C2 = cumsum(C1);
原創/替代
您可以在 whereC1=1和 where找到索引C1=-1,根據您的評論,這些索引的數量應該相等
idxStart = find(C1=1); % Could use >0.5 to avoid numerical precision issues
idxEnd = find(C1=-1); % Could use <-0.5 to avoid numerical precision issues
然后你只需要遍歷它們并C2=1在它們之間進行
C2 = zeros(size(C1));
for ii = 1:numel(idxStart)
C2(idxStart(ii):idxEnd(ii)-1) = 1;
end
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/364567.html
標籤:MATLAB
