Combining Logical Indexes

7 visualizaciones (últimos 30 días)
Brian
Brian el 4 de Nov. de 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

Respuesta aceptada

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

Iniciar sesión para comentar.

Más respuestas (1)

Brian
Brian el 4 de Nov. de 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 comentarios
Walter Roberson
Walter Roberson el 4 de Nov. de 2011
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 el 4 de Nov. de 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;

Iniciar sesión para comentar.

Categorías

Más información sobre Resizing and Reshaping Matrices en Help Center y File Exchange.

Etiquetas

Productos

Community Treasure Hunt

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

Start Hunting!

Translated by