Pattern search and string indexing

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?

 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
Thank you Hamza, your code has saved my day!
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.
FYI, following code will slice A as you want
C = A([B{:}])

Connectez-vous pour commenter.

Catégories

En savoir plus sur Matrices and Arrays dans Centre d'aide et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by