Any hint about this error?

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 commentaire

Jos (10584)
Jos (10584) le 16 Juil 2013
logical(x) is faster, and easier to read!, than ~~x

Connectez-vous pour commenter.

 Réponse acceptée

Chris
Chris le 16 Juil 2013

0 votes

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 commentaires

Jos (10584)
Jos (10584) le 16 Juil 2013
Take a look at this
a = 1
b = logical(a)
class (a)
class(b)
Chris
Chris le 16 Juil 2013
thanks!

Connectez-vous pour commenter.

Plus de réponses (2)

harjeet singh
harjeet singh le 16 Juil 2013

0 votes

use this
R = rand(7,7);
ind_diag = logical(eye(7));
R(ind_diag)
harjeet singh
harjeet singh le 16 Juil 2013

0 votes

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

Catégories

En savoir plus sur Startup and Shutdown dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by