# What determines the shape of a logically indexed array?

1 view (last 30 days)
Ondrej Budac on 3 Apr 2014
Answered: Ondrej Budac on 7 Apr 2014
Matlab help explains: " Logical Indexing : ... The output is always in the form of a column vector."
In practice, typing
a = ones(3,3);
b = a([true, true]);
gives a row vector b. Can someone tell me why does it behave this way? And is there any other instance (apart from indexing by one row logical vector) that gives a non-column result? Thanks, O.

Ondrej Budac on 7 Apr 2014
Just to complete the story, the answer seems to be:
If B is a logical array and A is any array, then A(B) is equivalent (but faster) way to produce the same result as A(find(B)), including the shape of the output.

### More Answers (1)

Azzi Abdelmalek on 3 Apr 2014
Maybe you need
a = ones(3,3);
b = a([true, true],:)
Azzi Abdelmalek on 3 Apr 2014
Just one question, what are you expecting with a(logical([1 0;1 1])) ? The result contains 3 elements
Ondrej Budac on 3 Apr 2014
If I now understand logical indexing correctly, I expect a(logical([1 0;1 1])) to give a column vector with values 1, 4, 2, assuming your definition of a.

### Categories

Find more on Matrices and Arrays in Help Center and File Exchange

### Community Treasure Hunt

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

Start Hunting!