Borrar filtros
Borrar filtros

Any hint about this error?

1 visualización (últimos 30 días)
Chris
Chris el 16 de Jul. de 2013
Steps to reproduce (on Matlab R2013a 64bit Win machine):
R = rand(7,7);
>> ind_diag = eye(7);
>> R(ind_diag)
Error: Subscript indices must either be real positive integers or logicals.
>> ind_diag = ~~eye(7);
>> R(ind_diag)
ans =
0.8702
0.3818
0.6567
0.1098
0.4873
0.1401
0.7657
Cheers, Chris
  1 comentario
Jos (10584)
Jos (10584) el 16 de Jul. de 2013
logical(x) is faster, and easier to read!, than ~~x

Iniciar sesión para comentar.

Respuesta aceptada

Chris
Chris el 16 de Jul. de 2013
thank you Harjeet,
however i still wonder why eye() or ones() don't work.
Is it a bug or a misuse of these functions?
  2 comentarios
Jos (10584)
Jos (10584) el 16 de Jul. de 2013
Take a look at this
a = 1
b = logical(a)
class (a)
class(b)
Chris
Chris el 16 de Jul. de 2013
thanks!

Iniciar sesión para comentar.

Más respuestas (2)

harjeet singh
harjeet singh el 16 de Jul. de 2013
use this
R = rand(7,7);
ind_diag = logical(eye(7));
R(ind_diag)

harjeet singh
harjeet singh el 16 de Jul. de 2013
eye() will give you a output in double format and when you use ~~eye() it automatically converts in logical.
the command R(ind_diag) uses inputs as logical so that's why you have to convert it into logical before use

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by