Combining Logical Indexes

6 次查看(过去 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 中查找有关 Resizing and Reshaping Matrices 的更多信息

标签

产品

Community Treasure Hunt

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

Start Hunting!

Translated by