フィルターのクリア

How to simplify a code to remove a for loop and make it faster?

3 ビュー (過去 30 日間)
carlos Uribe
carlos Uribe 2014 年 8 月 14 日
回答済み: Andrei Bobrov 2014 年 8 月 14 日
Hello,
I'm still learning vectorization and haven't figured out how to simplify this code:
B=zeros(1,a^2);
for j=1:a^2;
B(:)=B(:)+C(:,j)*D(j);
end;
in which B is a vector of 1 row by a^2 columns, C is an a x a matrix, and D is a vector of 1 row by a^2 columns
So basically what is happening is I take all the columns of C (one by one) and multiply them by D and then add them to B but this is repeated column by column on C.
I appreciate if anyone can show me how to do this.
Thank you very much.

回答 (3 件)

Iain
Iain 2014 年 8 月 14 日
One of these ought to do it:
B = C' * D;
or
B = C' * D';
You might need to transpose B to get what you want....

Azzi Abdelmalek
Azzi Abdelmalek 2014 年 8 月 14 日
編集済み: Azzi Abdelmalek 2014 年 8 月 14 日
Edit
a=4
C=rand(a^2);
D=rand(1,a^2);
B=sum(bsxfun(@times, C,D),2)
  2 件のコメント
carlos Uribe
carlos Uribe 2014 年 8 月 14 日
sorry my bad...C is an a^2 x a^2 array
Azzi Abdelmalek
Azzi Abdelmalek 2014 年 8 月 14 日
編集済み: Azzi Abdelmalek 2014 年 8 月 14 日
Look at edited answer

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


Andrei Bobrov
Andrei Bobrov 2014 年 8 月 14 日

カテゴリ

Help Center および File ExchangeLogical についてさらに検索

タグ

製品

Community Treasure Hunt

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

Start Hunting!

Translated by