HELP : Subscript indices must either be real positive integers or logicals - AGAIN

1 次查看(过去 30 天)
I need your help to solve the problem of subscript index that must either be positive integer or logical. Can any one help to correct this ?
A = magic(5);
M1 = size(A,1);
M2 = size(A,2);
E = [5 8 20];
for x = 1:M1
for y = 1:M2
if A(A(x,y) == E)
A(x-1,y) = 5
end
end
end
Thank you!

采纳的回答

Adam
Adam 2016-1-11
By including 'again' in the title I hope that you are learning from previous solutions and that this is a different type of cause to your previous such problems.
The line
A(x-1,y) = 5
fails first time round the loop because x is 1 so x-1 is 0 which is not a valid array index (this is what the error message tells you - it must be a real positive integer or a logical - 0 is neither of those).
How to fix it depends on your intent. Starting your for loop indexed from 2 instead of 1 would remove the error but may not be the solution you want.
  6 个评论
Adam
Adam 2016-1-12
编辑:Adam 2016-1-12
for x = 2:(M1-1)
for y = 2:(M2-1)
for k = 1:length(E)
if A(A(x,y) == E(k))
A(x-1,y) = E(k);
A(x+1,y) = E(k);
A(x,y-1) = E(k);
A(x,y+1) = E(k);
end
end
end
end
should probably do the job, though I'm sure there are neater ways.
Gobert
Gobert 2016-1-13
The above code did not unfortunately yield the results expected. See the results, it yielded:
A =
17 5 5 5 15
5 5 5 5 5
5 5 5 5 5
5 5 5 5 5
11 5 5 5 9
The expected results are shown below:
A =
17 5 1 8 15
5 5 5 20 16
4 5 20 20 20
10 12 19 20 3
11 18 25 2 9

请先登录,再进行评论。

更多回答(0 个)

类别

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