フィルターのクリア

Vectorization of matrices multiplication

3 ビュー (過去 30 日間)
Eugenio Grabovic
Eugenio Grabovic 2019 年 1 月 21 日
コメント済み: Eugenio Grabovic 2019 年 1 月 21 日
Hi,
i have some trouble finding out how to vectorize the following loop:
for k = 1:PointsLength
h(k,1) = transpose(PointsA(:,k) - PointsB(:,k))*normals(:,k);
end
The first thing that comes into my mind is doing this:
all the matrices have 3 x n dimensions and i want h to be 1 x n vector
k = 1:PointsLength
h(:) = transpose(PointsA(:,k) - PointsB(:,k))*normals(:,k);
but its obviously it's not the same thing since im trying to achieve row column multiplication only in pairs ( just k_th row times k_th column, without k_th row times other columns), and thus gives error cause he expects h to be n x n.
Any ideas? Thank you in advance.
  2 件のコメント
madhan ravi
madhan ravi 2019 年 1 月 21 日
Probably you want to use .* (element-wise multiplication) ?
Eugenio Grabovic
Eugenio Grabovic 2019 年 1 月 21 日
k = 1:PointsLength
h(:) = transpose(PointsA(:,k) - PointsB(:,k)).*normals(:,k);
gives error cause he wants matrices to have the same dimensions (no transpose),
but by doing that i would only achieve (i_th,j_th) element multiplication only, with a 3 x n h matrix as a result (not what i was looking for).

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

採用された回答

Jan
Jan 2019 年 1 月 21 日
編集済み: Jan 2019 年 1 月 21 日
h = dot(PointsA - PointsB, normals).'
or
h = sum((PointsA - PointsB) .* normals, 1).'
  1 件のコメント
Eugenio Grabovic
Eugenio Grabovic 2019 年 1 月 21 日
Oh wow, i feel so stupid... thank you very much !

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

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeCreating and Concatenating Matrices についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by