matrix indexing and manipulation
    9 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
Hi
(Newbie question)
I have a matrix which is Z=131x47 If I do ZA=Z(1:end); am I right in thinking the elements are rearragned columnwise? Say for example I am interested in the element ZA(1,3000), how do I know what the position of this value is in the original matrix Z?
Thanks
0 comentarios
Respuesta aceptada
  Yoav Livneh
      
 el 26 de Jul. de 2011
        You can use ind2sub.
[rowIndex, colIndex] = ind2sub(size(Z),Index);
I think this should work.
0 comentarios
Más respuestas (2)
  Image Analyst
      
      
 el 26 de Jul. de 2011
        You could use numel() to tell how many elements are in your Z matrix, then check if 3000 <= numel(Z).
0 comentarios
  Andreas Goser
    
 el 26 de Jul. de 2011
        First, you are correct that this code would arrange elements columnwise. You may have a look at the RESHAPE command for a more general way of reshaping a matrix. Using REHSHAPE or your code however, does not preserve the size of the orginal matrix. You need to store that to be able to invert the reshape.
You may also be interested to know that matrices in MATLAB can be accessed as vectors
X=rand(10,7);
X(5,4)=1 % Setting to one to spot it better
X(35) % element 4*7+5
Maybe there is a way to write your code without creating an additional vector ZA,
2 comentarios
  Andreas Goser
    
 el 26 de Jul. de 2011
				OK, the answer above WRT IND2SUB seems to meet your needs. My additional point was that you may be able to avoid the "conversion".
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!



