the description below .. for loop and matrices

2 ビュー (過去 30 日間)
Matthew Worker
Matthew Worker 2021 年 6 月 26 日
コメント済み: Rena Berman 2021 年 12 月 16 日
% when o=1 I want to multiply the second row of H with the second column of W and sum it with the multiplication of the third row of H with the third column of W and the multiplication of the fourth row of H with the fourth column of W.
% when o=2 I want to multiply the first row of H with the first column of W and sum it with the multiplication of the third row of H with the third column of W and the multiplication of the fourth row of H with the fourth column of W.
% when o=3 I want to multiply the first row of H with the first column of W and sum it with the multiplication of the second row of H with the second column of W and the multiplication of the fourth row of H with the fourth column of W.
% and so on .....
clc;
clear;
H=[1 2 2 1 ; 3 1 1 2;1 3 2 4;2 1 3 5]
W=[4 1 2 1;1 3 2 1;2 1 1 3;2 1 1 4]
for o=1:4
p = abs(H(o,:)*W(:,o))
end
  1 件のコメント
Rena Berman
Rena Berman 2021 年 12 月 16 日

(Answers Dev) Restored edit

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

採用された回答

Walter Roberson
Walter Roberson 2021 年 6 月 26 日
H=[1 2 2 1 ; 3 1 1 2;1 3 2 4;2 1 3 5]
H = 4×4
1 2 2 1 3 1 1 2 1 3 2 4 2 1 3 5
W=[4 1 2 1;1 3 2 1;2 1 1 3;2 1 1 4]
W = 4×4
4 1 2 1 1 3 2 1 2 1 1 3 2 1 1 4
locs = [2 2 3 3 4 4;
1 1 3 3 4 4;
1 1 2 2 4 4];
for o = 1 : size(locs,1)
p(o) = H(locs(o,1),:)*W(:,locs(o,2)) + H(locs(o,3),:)*W(:,locs(o,4)) + H(locs(o,5),:)*W(:,locs(o,6));
end
p
p = 1×3
55 58 53
  6 件のコメント
Walter Roberson
Walter Roberson 2021 年 6 月 27 日
Suppose for discussion that H is 4 x 3, and W is 5 x 4
H=[1 2 2; 3 1 1;1 3 2;2 1 3]
H = 4×3
1 2 2 3 1 1 1 3 2 2 1 3
W=[4 1 2 1;1 3 2 1;2 1 1 3;2 1 1 4; 1 2 4 5]
W = 5×4
4 1 2 1 1 3 2 1 2 1 1 3 2 1 1 4 1 2 4 5
Now for the first iteration, you define
o = 1
p = abs(H(o,:)*W(:,o))
H(o,:) is 1 x 3 and W(:,o) is 5 x 1. But you cannot use * between a 1 x 3 and a 5 x 1.
Your definitions cannot work unless you define that W has the same number of rows that H has columns -- which you do not do.
If you had defined
p = abs(W(:,o)*H(o,:))
then that would work, giving a 5 x 3 result.
Which do you want? That each entry should be size(W,1) x size(H,2) ? Or that each entry should be 1 x 1, in which case you would have to define H as having the same number of columns as W has rows.
Matthew Worker
Matthew Worker 2021 年 6 月 27 日
編集済み: Leo Map 2021 年 6 月 27 日
you are right, W has the same number of rows that H has columns,but ... when (i=1) I need the multiplication of the first row of H and the first column of W and put it in variable Alfa_1 and then multiplying separately the second row of H and the second column of W and sum it with the multiplication of the third row of H and the third column of W and sum it with the multiplication of the fourth row of H and the fourth column of W and put the sum in Alfa_2.
... when (i=2) I need the multiplication of the second row of H and the second column of W and put it in variable Alfa_1 and then multiplying separately the first row of H and the first column of W and sum it with the multiplication of the third row of H and the third column of W and sum it with the multiplication of the fourth row of H and the fourth column of W and put the sum in Alfa_2.
and goes like this.
I'm sorry because I didn't describe clearly what I need.
Thank you

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

その他の回答 (0 件)

カテゴリ

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