Pattern search and string indexing

1 vue (au cours des 30 derniers jours)
Ronald
Ronald le 4 Juin 2020
Commenté : Ameer Hamza le 5 Juin 2020
I have two cell arrays:
A = {[x(2)& x(4)& x(1)],[x(3),x(5)],[x(2),x(1)]}
B = {2465,2514,147,236,58}
where the integers in A are the indices of B items. I want to replace those indices with actual values as:
C = {[2514,236,2465],[147,58],[2514,2465]}
For loop is a bit slow. Is there an alternative?
  1 commentaire
madhan ravi
madhan ravi le 4 Juin 2020
Why would you do that?

Connectez-vous pour commenter.

Réponse acceptée

Ameer Hamza
Ameer Hamza le 4 Juin 2020
Something like this
A = {[2 4 1],[3 5],[2 1]}; % you can put indexes as numbers
B = {2465,2514,147,236,58};
A_new = cellfun(@(x) {[B{x}]}, A)
  3 commentaires
Ronald
Ronald le 4 Juin 2020
By the way, can we set a separator in the output here?
Ameer Hamza
Ameer Hamza le 4 Juin 2020
Can you explain what do you mean by separator?

Connectez-vous pour commenter.

Plus de réponses (1)

madhan ravi
madhan ravi le 4 Juin 2020
A = @(x){[x(2), x(4), x(1)],[x(3),x(5)],[x(2),x(1)]}
B = {2465,2514,147,236,58}
C = A(B)
  2 commentaires
Ronald
Ronald le 4 Juin 2020
Thanks mate! However, I found out that it couldn't slice A nicely as I wanted.
Ameer Hamza
Ameer Hamza le 5 Juin 2020
FYI, following code will slice A as you want
C = A([B{:}])

Connectez-vous pour commenter.

Catégories

En savoir plus sur Desktop 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!

Translated by