For loop to carry value down depending on another matrix value
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Hello!
I have the following issue. I have 2 matrices (MatrixA and MatrixB), I want to create a third one(MatrixC) that uses the information on both as follows:
MatrixA MatrixB MatrixC
_______ _______ ______
0 150 0
0 1100 0
0 50 0
-1 20 0 When MatrixA switches from 0 to -1 use MatrixB Value,
-1 120 20 and copy that value all the way down until MatrixA
-1 70 20 turn to 1 and then repeat for every other instance
-1 90 20 very likely a for loop way.
1 100 20
0 101 0
-1 115 0
-1 110 115
-1 160 115
-1 200 115
-1 275 115
-1 400 115
-1 500 115
1 504 115
Preferably MatrixC maintains same size as MatixA OR MatrixC that’s why the zeros filling the gaps when it’s not applicable. Thanks so much for the help!
0 Commenti
Risposta accettata
J. Alex Lee
il 22 Feb 2022
In your example, there is a "delay" by 1 row when your switch from 0 to -1 occurs, so the following answer is not exactly producing the example, but maybe it can get you started
data = array2table([ 0 150
0 1100
0 50
-1 20
-1 120
-1 70
-1 90
1 100
0 101
-1 115
-1 110
-1 160
-1 200
-1 275
-1 400
-1 500
1 504],"VariableNames",["A","B"])
data.C = nan(height(data),1);
% find where A switches from -1 to 0
sw = [false;diff(data.A)==-1]
% copy B into C when switch condition is met
data.C(sw) = data.B(sw)
% fix C to 0 when A=0
data.C(data.A==0) = 0
% fillmissing with previous value
data.C = fillmissing(data.C,"previous")
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Loops and Conditional Statements in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!