0

나는 스칼라의 그룹을 가지고 respertively 매트릭스 :루프가없는 가중치 행렬의 평균은 어떻게됩니까?

w1, w2...wn 
A1, A2... An 

방법 루프없이

w1*A1 + w2*A2 + ... + wn*An 

를 얻을? 그리고 얼마나 효율적으로

w1*(b1*c1) + w2*(b2*c2) + ... + wn*(bn*cn) 
bici이 벡터하지만 bi*ci 매트릭스가 아닌 스칼라

를 얻을?

+0

방금 ​​당신이 쓴 내용을 입력하는 것을 시도했다 (같은'W1 * A1 + W2 * A2 + ... + WN * An') INT 매트랩? 기본 Matlab 매트릭스 작업입니다 : [times] (https://se.mathworks.com/help/matlab/ref/mtimes.html) 및 [plus] (https://se.mathworks.com/help/matlab/ref) /plus.html). – NLindros

+0

maeby 나는'wi'에서 벡터'w'를 만들고,'Ai'에서 모양을 만들고'Ai'에서 행렬을 만들고 'bsxfun'을 사용한 후에 모양을 바꾸지 않고 또 다른 방법을 만들어야합니까? – user7484269

답변

0

편집 : 더 나은 해결책이 있습니다.

당신의 행렬는 n = 1, 2, ..., N에 대한 크기 P x Q x N 등이 An = A(:,:,n)의 3-D 매트릭스에 저장하고 가중치는 다음 크기 1 x N의 가중치 벡터 w 다음 명령을 수행하는 가중 평균에 저장되어있는 경우 :

B = reshape(w*reshape(permute(A,[3,1,2]),N,[]),[P,Q]); 
다음과 같이
+0

내 무게가 벡터에 저장됩니다. 그리고 기질 stoughage에 대한 질문은 여전히 ​​열렸습니다. 셀 (이 작업이 아님)과 각 행렬을 벡터로 변환하고이 벡터를 다른 행렬에 넣는 것에 대해서만 기억할 수 있습니다. – user7484269

+0

답장을 편집했습니다. 시도해보고 그것이 효과가 있는지보십시오. – Florian

+0

Maeby 나를 위해 더 좋지만, GPU가 사용할 때 모양을 변경하는 대신 인덱스 조작을 사용하는 것이 좋습니다. 결정 주셔서 감사합니다, 그것은 내 작업에 충분히 잘 작동합니다. – user7484269

0

먼저 문제가 bsxfun으로 해결할 수 있습니다

% create matrices 
a=[1 2] 
b=randi(9,[3 3 2]) 

% now you will have to reshape a, so that its non-singleton dimensions match b 
% i.e. a is 1 x 2 and b is 3 x 3 x 2, so second dimension of (=2) should match 
% 3rd dimension of b (=2). Thus a should be of shape `1 x 1 x 2`. Then you can 
% multiply using bsxfun and sum along 3rd dimension as follows 

sum(bsxfun(@times, permute(a,[3 1 2]), b),3) 
+0

감사합니다. 동일한 결정이 상기 한 바 있습니다. – user7484269