Combining Logical Indexes

12 views (last 30 days)
Brian on 4 Nov 2011
I have two logical Indexes that I need to reference with my large Matrix of data before performingons. One Index (MyDates) is 1x693 and the other (MyTickers) is 589x1. I need to combine the two Indexes into one large 589x693 logical index. How do I go about oing that?
Thanks, Brian

Fangjun Jiang on 4 Nov 2011
What is the operation, and, or, plus, minus?
bsxfun(@and,MyTickers,MyDates)
Sean de Wolski on 4 Nov 2011
Fangjun is correct! times would work, but it's slightly slower since ML has to do a multiplication instead of a logical operation.

Brian on 4 Nov 2011
Excellent that works great. I used the syntax below.
Idx3 = bsxfun(@and,index2,index1)
So now Idx3 is a 5x5 logical matrix. However, when I try to apply this logical matrix to my 5x5 matrix (MyRtn) in the format MyRtn2 = MyRtn(Idx3) I end up with MyRtn2 being a 9x1 matrix??? Why would that be happening?
Fangjun Jiang on 4 Nov 2011
That is expected. If you want to keep the shape of the original matrix, you need fill it with something depending on your need. For example,
a=magic(3);
b=logical([1 1 0;0 1 0;0 1 0]);
a(~b)=nan;

Categories

Find more on Matrix Indexing 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!

Translated by