Question about 2D Vector Multiplication
1 Ansicht (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 Matrix Indexing 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!