Combining Logical Indexes

1 次查看(过去 30 天)
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
Fangjun Jiang 2011-11-4
What is the operation, and, or, plus, minus?
bsxfun(@and,MyTickers,MyDates)
  3 个评论
Fangjun Jiang
Fangjun Jiang 2011-11-4
Then @and is what you need!
Sean de Wolski
Sean de Wolski 2011-11-4
Fangjun is correct! times would work, but it's slightly slower since ML has to do a multiplication instead of a logical operation.

请先登录,再进行评论。

更多回答(1 个)

Brian
Brian 2011-11-4
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 个评论
Walter Roberson
Walter Roberson 2011-11-4
What shape were you expecting? When you extract arbitrary elements out of a matrix, there is no way for MATLAB to leave "hole" that preserve any original existing shape.
Fangjun Jiang
Fangjun Jiang 2011-11-4
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;

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

标签

产品

Community Treasure Hunt

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

Start Hunting!

Translated by