Index in position 2 exceeds array bounds (must not exceed 2).
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Anjolaoluwa Bamtefa
el 20 de Jul. de 2020
Comentada: madhan ravi
el 20 de Jul. de 2020
I am trying to write code to delete every column of a matrix that has 0 in the second row so I am only left with the columns that have values in that second row. The code works okay and does that but I keep getting the error "Index in position 2 exceeds array bounds (must not exceed 2)."
I need to use the values after and I keep running into the same problem. Can I get some help?
This is what my code looks like :
c= length(fill);
while c >= 1
if fill(2,c) == 0;
fill(:,c) = [];
c = length(fill);
else
c = c - 1;
end
end
fill is typically a 3 by 30 ish matrix (it changes for each set of data).
0 comentarios
Respuesta aceptada
madhan ravi
el 20 de Jul. de 2020
Never name a variable fill !
ix = FiLL(2, :) == 0;
FiLL(:, ix) = []
Más respuestas (1)
Bhupendra Prajapati
el 20 de Jul. de 2020
length function will give maximum of rows or columns in the matrix, you should use size function to calculate number of columns
You can use the code given below to do your task.
[r,c]=size(fill)
id=1;
while(id<=c)
if(any(fill(2,id)==0))
fill(:,id)=[];
c=c-1;
else
id=id+1;
end
end
1 comentario
madhan ravi
el 20 de Jul. de 2020
As mentioned above , not a good idea to use fill as a variable name. And loop is totally unnecessary here.
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!