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
Matt J 2014 年 8 月 13 日

3 投票

C=bsxfun(@rdivide,A,B);

その他の回答 (2 件)

Ahmet Cecen
Ahmet Cecen 2014 年 8 月 13 日

1 投票

BB=repmat(B,[n 1]);
C=A./BB;

1 件のコメント

Matt J
Matt J 2014 年 8 月 13 日
編集済み: Matt J 2014 年 8 月 13 日
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
Joakim Magnusson 2014 年 8 月 13 日
編集済み: Joakim Magnusson 2014 年 8 月 13 日

0 投票

Try:
C = bsxfun(@rdivide, A, B)

1 件のコメント

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

サインインしてコメントする。

カテゴリ

タグ

タグが未入力です。

質問済み:

H-H
2014 年 8 月 13 日

コメント済み:

2014 年 8 月 13 日

Community Treasure Hunt

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

Start Hunting!

Translated by