how create a new matrix with values found in an another matrix
    3 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
Hi, I've the matrix A with dimension (m*n*p). I've found the indexes of the first non-zero elements along the dimension p. They are stored in I with dimension m*n. I would create a new matrix B with dimension m*n with the values corresponding to the indexes I taken in A.
Thanks, Gianluca
2 Commenti
Risposta accettata
  Sven
      
 il 23 Set 2012
        
      Modificato: Sven
      
 il 23 Set 2012
  
      Hi Gianluca,
Have you tried using the second output from find_ndim?
[I, Imap] = find_ndim(A,3,'first');
B = A(Imap);  % The actual elements of A that were "found" above, as a vector
B = reshape(B, size(I)); % size(I) is just [m n] from your question
Basically, the elements of the variable I (output from find_ndim) are the subscript references of the 3rd dimension of A. You can also use sub2ind() to get the same result as above, you just also need the first and second subscript references:
[subs2ndDim,subsFirstDim] = meshgrid(1:size(A,2),1:size(A,1));
inds = sub2ind(size(A), subsFirstDim, subs2ndDim, I)
B = A(inds);
Hope this helped you out.
0 Commenti
Più risposte (0)
Vedere anche
Categorie
				Scopri di più su Matrix Indexing in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


