How to slice a two-dimensional array to get a one-dimensional array

Hi! This seems to be a simple question but I couldn't find its answer after some searching. Let
a = rand(5, 4); i = [2 4 3]; j = [1 2 3];
How do I write a slicing expression to yield the one-dimensional array [a(2, 1), a(4, 2), a(3, 3)]? The expression a(i, j) yields a 3x3 matrix, which is not what I wanted.
Thanks!

Réponses (2)

Donald Liu
Donald Liu le 27 Fév 2018
I just found a solution: a(i + (j-1)*4). Are there better answers?
Thanks!
Well, this is a specific suggestion for this case.
You might implement some sort of loop for bigger cases.
a = rand(5, 4)
i = [2 4 3];
j = [1 2 3];
b = [a(i(1), j(1)) a(i(2), j(2)) a(i(3), j(3))]
So you're basically creating a array b with size (1, 3), calling each element from a by passing the indexes of i and j.
If that works, please accept the answer =)
Cheers.

Catégories

En savoir plus sur Loops and Conditional Statements 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