Pattern search and string indexing

1 Ansicht (letzte 30 Tage)
Ronald
Ronald am 4 Jun. 2020
Kommentiert: Ameer Hamza am 5 Jun. 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?

Akzeptierte Antwort

Ameer Hamza
Ameer Hamza am 4 Jun. 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 Kommentare
Ronald
Ronald am 4 Jun. 2020
By the way, can we set a separator in the output here?
Ameer Hamza
Ameer Hamza am 4 Jun. 2020
Can you explain what do you mean by separator?

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

madhan ravi
madhan ravi am 4 Jun. 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 Kommentare
Ronald
Ronald am 4 Jun. 2020
Thanks mate! However, I found out that it couldn't slice A nicely as I wanted.
Ameer Hamza
Ameer Hamza am 5 Jun. 2020
FYI, following code will slice A as you want
C = A([B{:}])

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Characters and Strings finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by