A simple matrix operation

1 visualizzazione (ultimi 30 giorni)
H-H
H-H il 13 Ago 2014
Commentato: Joakim Magnusson il 13 Ago 2014
I have a Matrix A with n rows and d columns. Matrix B has 1 row and d columns. I want to create a new Matrix C with the same size as A, where any of its element in each row is obtained by dividing elements of rows A by elements of row in B. How can we do it without using "for" only uning matlab matrix operations in a general case?
For example, A[1 2 3; 4 5 6; 7 8 9; 10 11 12] and B[10 20 30], I want C as: C[1/10 2/20 3/30; 4/10 5/20 6/30; 7/10 8/20 9/30; 10/10 11/20 12/30]

Risposta accettata

Matt J
Matt J il 13 Ago 2014
C=bsxfun(@rdivide,A,B);

Più risposte (2)

Ahmet Cecen
Ahmet Cecen il 13 Ago 2014
BB=repmat(B,[n 1]);
C=A./BB;
  1 Commento
Matt J
Matt J il 13 Ago 2014
Modificato: Matt J il 13 Ago 2014
Note, in older versions of MATLAB repmat does use M-Coded for-loops. There is also additional memory allocation needed for storing BB. bsxfun was introduced precisely to avoid this.

Accedi per commentare.


Joakim Magnusson
Joakim Magnusson il 13 Ago 2014
Modificato: Joakim Magnusson il 13 Ago 2014
Try:
C = bsxfun(@rdivide, A, B)
  1 Commento
Joakim Magnusson
Joakim Magnusson il 13 Ago 2014
Oh sorry Matt J, didn't see your answer when i wrote mine. Stalin are you being sarcastic? because it do work.

Accedi per commentare.

Tag

Non è stata ancora inserito alcun tag.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by