Combining Logical Indexes

11 views (last 30 days)
Brian
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

Accepted Answer

Fangjun Jiang
Fangjun Jiang on 4 Nov 2011
What is the operation, and, or, plus, minus?
bsxfun(@and,MyTickers,MyDates)
  3 Comments
Sean de Wolski
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.

Sign in to comment.

More Answers (1)

Brian
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?
  2 Comments
Fangjun Jiang
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;

Sign in to comment.

Products

Community Treasure Hunt

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

Start Hunting!

Translated by