3D Array Multiplication with 2D Matrix
    27 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
    Anum Ahmed
 il 28 Ago 2019
  
    
    
    
    
    Risposto: stav marzuk
 il 7 Dic 2021
            Hi,
I have a 3D array of lets say 500:10:32 elements. I want to multiple the first dimension of lthis array with another 1:500 matrix. How would I do this?
Regards
2 Commenti
  Bob Thompson
      
 il 28 Ago 2019
				Which 500 elements from the first matrix do you want to multiply the second matrix by? There are 320 different options.
Or are you looking to multiply all 320 sets of 500 against the new matrix?
Also, how are you looking to store your new 500 x 500 matrices?
Risposta accettata
  KALYAN ACHARJYA
      
      
 il 28 Ago 2019
        
      Modificato: KALYAN ACHARJYA
      
      
 il 28 Ago 2019
  
      data1=rand(500,10,32);% 3D Array
data2=rand(1,500);    %1x500 mat 
result=data1(1:500,1,1)*data2;  %Multiplication
4 Commenti
  Bob Thompson
      
 il 28 Ago 2019
				Also, if you want to perform the multiplication on the entire 3D array, then the first thing that comes to mind for me is for loops, or arrayfun. There might be a way to do it without loops, but I don't know it (which doesn't say much).
for i = 1:size(data1,2)
    for j = 1:size(data1,3)
        data1(:,i,j) = data1(:,i,j).*data2';
    end
end
Più risposte (3)
  Bruno Luong
      
      
 il 28 Ago 2019
        
      Modificato: Bruno Luong
      
      
 il 28 Ago 2019
  
      Simply do (R2016b or later)
data1 = data1 .* data2(:)
2 Commenti
  Bob Thompson
      
 il 28 Ago 2019
				
      Modificato: Bob Thompson
      
 il 28 Ago 2019
  
			Does this automatically choose the appropriate dimension though? I would logically make the connection between 500 and 500 elements in a dimension, but that doesn't mean a computer will.
Or will it produce 500 500x10x32 arrays, one for each element of data2?
  stav marzuk
 il 7 Dic 2021
        Hi i think i have the same problem, but i didnt sucssed to solve it. 
I have an rgb photo with the size:        30432       29516    3
and i have a mask bw with the size     30432       29516
is it possible to multiply the two of them?
rgb .*bw
this multplication is not working, is there a solution? 
Thanks in advance 
0 Commenti
Vedere anche
Categorie
				Scopri di più su Creating and Concatenating Matrices 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!