Creating index and replacing values
Afficher commentaires plus anciens
Hi,
I have A = [0 0 1 0 1 0 0], and B = [ "030121", "030221", "030321"]
I want to create C = [ "030121", "030121", "030221", "030221", "030321", "030321", "030321"], by looking at A, and treating each sucessive sequence beginning with 1 as a new day, and replacing with the corresponding date from B. his is a generalization of a large problem.
Any help would be appreciated!
Inna
2 commentaires
Scott MacKenzie
le 21 Juin 2021
Note that
B = [ '030121', '030221', '030321']
is the same as
B = '030121030221030321'
and that
C = [ '030121', '030121', '030221', '030221', '030321', '030321', '030321']
is the same as
C = '030121030121030221030221030321030321030321'
Did you perhaps intend these to be strings, for example
B = ["030121", "030221", "030321"]
Inna Pelloso
le 21 Juin 2021
Réponse acceptée
Plus de réponses (1)
Scott MacKenzie
le 21 Juin 2021
Below is a loop solution. There might be a way to vectorize this -- not sure.
A = [0 0 1 0 1 0 0];
B = [ "030121", "030221", "030321"];
M = [];
k = 1;
for i=1:length(A)
if A(i) == 1 % new day
k = k + 1;
end
M = [M B(k)];
end
Output:
M =
1×7 string array
"030121" "030121" "030221" "030221" "030321" "030321" "030321"
Obviously, the number of 1s in A can't exceed the number of strings in B (minus 1).
1 commentaire
Inna Pelloso
le 21 Juin 2021
Catégories
En savoir plus sur Matrix Indexing dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!