For loop to carry value down depending on another matrix value
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
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 commentaires
Réponse acceptée
J. Alex Lee
le 22 Fév 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")
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!