- i is equal to 1. In that case, you must not access row i-1
- i is equal to the number of rows in the array. In that case you must not access row i+1
- j is equal to 1. In that case, you must not access column j-1
- j is equal to the number of columns. In that case you must not access column j+1
- otherwise neither i nor j are on the border and you can access the elements without restriction.
Changing adjacent elements in matrix with input from user
6 次查看(过去 30 天)
显示 更早的评论
for i=1:n
for j=1:n
if matrixM(i,j)==0
matrixM(i+1,j)=-1;
matrixM(i,j+1)=-1;
matrixM(i-1,j)=-1;
matrixM(i,j-1)=-1;
end
end
end
I want to change elements to -1 which are adjacent (only lateral and vertical) to zero. How can I fix this code.
0 个评论
采纳的回答
Walter Roberson
2023-4-18
You start j at 1, but you try to store into matrixM(i,j-1) . When j==1 then that would try to store into matrixM(i,0)
Likewise you start i at 1 but try to store into matrixM(i-1,j) which is matrixM(0,j)
You allow j to go to n but try to store into matrixM(i,j+1) . If n+1 is larger than the array, then you have a problem.
You have several different situations:
Now, you can do individual tests within your double-nested loop to be sure each location would be in range before doing the corresponding assignment. But there are other ways that might be more efficient.
0 个评论
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!