how to create 200 random matrices using loop..
    9 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Abhishek sadasivan
 el 23 de Ag. de 2014
  
    
    
    
    
    Editada: Matz Johansson Bergström
      
 el 23 de Ag. de 2014
            Hi..I want to create separate 200 random matrices of size 32*32 , and each to be multiplied with my input matrix..whether any looping is possible here ..please help ..
thank in advance
0 comentarios
Respuesta aceptada
  Image Analyst
      
      
 el 23 de Ag. de 2014
        
      Editada: Image Analyst
      
      
 el 23 de Ag. de 2014
  
      Try this:
tic;
inputMatrix = rand(32, 32); % Whatever you want...
for k = 1 : 200
  thisRandomMatrix = rand(32,32); % Create new random matrix for this iteration.
  storedMatrixes{k} = inputMatrix .* thisRandomMatrix ; % Multiply them
end
toc;
msgbox('Done with loop');
2 comentarios
  Image Analyst
      
      
 el 23 de Ag. de 2014
				
      Editada: Image Analyst
      
      
 el 23 de Ag. de 2014
  
			They are separate. Each one is in its own cell. To sum up all the elements in a particular matrix you can extract it then sum it:
thisMatrix = storedMatrixes{10}; % Get matrix #10.
theSum = sum(thisMatrix(:));  % Sum of all elements of matrix #10.
You could also store them as planes/slices in a 3D matrix if you preallocate a 3D matrix for them.
Más respuestas (1)
  Matz Johansson Bergström
      
 el 23 de Ag. de 2014
        I have not tried it but something like this:
n=200;
tmp = rand(32,32,n);
and then to multiply each matrix
for i=1:n
in = in*tmp(:,:,i)
end
2 comentarios
  Matz Johansson Bergström
      
 el 23 de Ag. de 2014
				
      Editada: Matz Johansson Bergström
      
 el 23 de Ag. de 2014
  
			I would argue that this is possible and very simple using a 3D matrix. The data is stored in another way, that's all and very efficient, because Matlab is made for matrices. For small matrices this does not really matter, but for larger ones it might make a difference.
My suggestion stacks the matrices into a 3d matrix and you can simply pick out the matrices like you would any other data structure.
Also, to sum all the matrices, you just have to write
sums = squeeze(sum(sum(tmp)))
This gives you the sum of all the elements in each matrix as a vector. Sums(i) contains the sum of matrix i.
Ver también
Categorías
				Más información sobre Creating and Concatenating Matrices 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!


