How to use the dot product within a loop to multiply a series of rows?!

I currently have two matrices.
- V = (1*3) matrix
- coordNORMALS = (18766*3) matrix.
I would like to take the dot product of the two such that:
- C = dot ( V, coordNORMALS)
I understand that to take the dot product the size of the two matrices must be equal, however I would like to find C for each row, i.e get 18766 values of C
C = dot ( V, coordNORMALS (1 , : )) all the way to C = dot ( V, coordNORMALS ( end , : ))
I have tried to use a loop in the following format but end up in an infinite loop:
for i=1:length(coordNORMALS)
C(i) = dot(V,coordNORMALS(i,:))
end
end
If anyone knows how to help, please reply
Many Thanks Josh

 採用された回答

Gareth Thomas
Gareth Thomas 2014 年 3 月 24 日

0 投票

V = rand(1,3)
C = rand(13,3)
dot(V,C(1,:))
dot(V,C(2,:))
for i = 1:length(C)
d(i) = dot(V,C(i,:));
end
Does this not work?

1 件のコメント

Joshua Otter
Joshua Otter 2014 年 3 月 24 日
It works fine, just me being an idiot. I had the answers coming up in the command window which took ages to load so I thought I was stuck in an infinite loop. Thanks Gareth.

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

その他の回答 (1 件)

James Tursa
James Tursa 2014 年 3 月 25 日

2 投票

A direct matrix multiply is likely to be faster than using dot. E.g., assuming the variables are real:
C = coordNORMALS * V.';

カテゴリ

ヘルプ センター および File ExchangeLoops and Conditional Statements についてさらに検索

製品

質問済み:

2014 年 3 月 24 日

回答済み:

2014 年 3 月 25 日

Community Treasure Hunt

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

Start Hunting!

Translated by