- 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 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
ahmet karakoç
el 18 de Abr. de 2023
Respondida: Walter Roberson
el 18 de Abr. de 2023
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 comentarios
Respuesta aceptada
Walter Roberson
el 18 de Abr. de 2023
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 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Matrix Indexing en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!