Question about 2D Vector Multiplication
    3 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
    mentalfiction
 am 21 Mai 2015
  
    
    
    
    
    Beantwortet: James Tursa
      
      
 am 21 Mai 2015
            I just have a simple question about vector multiplication in MATLAB. Let's say I have these two vectors: A=[1 2 3 4 5] B=[6 7 8 9 1]
Now normally if you would multiply these you would get need to do a transpose of either one to get a dot product, however, I want to ask if it's possible to do something like the following:
Take the first value in Set A and multiply it once with each number in B (so on and so forth), to give something like:
6 12 18 .
7 14 21 .
8 16 24 .
9 18 27 .
1 2  3  etc
I'm sure there must be a simple way to do it but I can't figure it out and also possibly you can find a way to expand and do it manually, but a function would be ideal. I have 160 lines of code that I need to do this with. Help would be appreciated! Thank you!
0 Kommentare
Akzeptierte Antwort
  Stephen23
      
      
 am 21 Mai 2015
        
      Bearbeitet: Stephen23
      
      
 am 21 Mai 2015
  
      >> A=[1 2 3 4 5];
>> B=[6 7 8 9 1];
>> X = bsxfun(@times,A,B(:))
X =
   6    12    18    24    30
   7    14    21    28    35
   8    16    24    32    40
   9    18    27    36    45
   1     2     3     4     5
And if you want it all in one row (as your original example was) just wrap it in reshape like this:
>> X = reshape(bsxfun(@times,A(:),B),1,[])
X = 6 12 18 24 30 7 14 21 28 35 8 16 24 32 40 9 18 27 36 45 1 2 3 4 5
2 Kommentare
Weitere Antworten (1)
  James Tursa
      
      
 am 21 Mai 2015
        This is a simple outer product. Depending on what order you want the results,
A.'*B
or
B.'*A
0 Kommentare
Siehe auch
Kategorien
				Mehr zu Logical finden Sie in Help Center und File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


