Question about 2D Vector Multiplication
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
mentalfiction
il 21 Mag 2015
Risposto: James Tursa
il 21 Mag 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 Commenti
Risposta accettata
Stephen23
il 21 Mag 2015
Modificato: Stephen23
il 21 Mag 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 Commenti
Più risposte (1)
James Tursa
il 21 Mag 2015
This is a simple outer product. Depending on what order you want the results,
A.'*B
or
B.'*A
0 Commenti
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!