Any hint about this error?

1 次查看(过去 30 天)
Chris
Chris 2013-7-16
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

采纳的回答

Chris
Chris 2013-7-16
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 个)

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

harjeet singh
harjeet singh 2013-7-16
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

类别

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

Community Treasure Hunt

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

Start Hunting!

Translated by