# A simple matrix operation

2 views (last 30 days)
H-H on 13 Aug 2014
Commented: Joakim Magnusson on 13 Aug 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]

Matt J on 13 Aug 2014
C=bsxfun(@rdivide,A,B);

Ahmet Cecen on 13 Aug 2014
BB=repmat(B,[n 1]);
C=A./BB;

#### 1 Comment

Matt J on 13 Aug 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.

Joakim Magnusson on 13 Aug 2014
Edited: Joakim Magnusson on 13 Aug 2014
Try:
C = bsxfun(@rdivide, A, B)

#### 1 Comment

Joakim Magnusson on 13 Aug 2014
Oh sorry Matt J, didn't see your answer when i wrote mine. Stalin are you being sarcastic? because it do work.