What determines the shape of a logically indexed array?
Show older comments
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.
Accepted Answer
More Answers (1)
Azzi Abdelmalek
on 3 Apr 2014
Maybe you need
a = ones(3,3);
b = a([true, true],:)
7 Comments
Ondrej Budac
on 3 Apr 2014
Edited: Ondrej Budac
on 3 Apr 2014
Azzi Abdelmalek
on 3 Apr 2014
a = ones(3,3);
a is a 3x3 array
your index is idx=[true, true] is a 1x2 array, the result a(idx) is obviously a 1x2 array.
Ondrej Budac
on 3 Apr 2014
Edited: Ondrej Budac
on 3 Apr 2014
Azzi Abdelmalek
on 3 Apr 2014
Edited: Azzi Abdelmalek
on 3 Apr 2014
Ok,
a=[1 2 3 ;4 5 6;7 8 9]
a([4 5;3 1]) % is a 2x2 array
% but if you use logical indexing
a(logical([1 0;1 1]))
% this is equivalent to a([1 2 4])
Ondrej Budac
on 3 Apr 2014
Edited: Ondrej Budac
on 3 Apr 2014
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
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!