2013-09-23 6 views
2

두 개의 행렬 AB을 가지고 있습니다. 크기는 모두 4x4입니다. 모든 컬럼에 의해,하나의 행렬의 모든 열에 bsxfun을 사용하여 다른 행렬을 곱하십시오.

bsxfun(@times, A(:,1),B) 

하지만 내가하고 싶은 것은 A의 각 열에 대해이 작업을 반복하는 것입니다 A의 예곱셈 모든 열을 :와 B의 다른 모든 열이 A의 첫 번째 열을 곱 Bbsxfun (루프가 없거나 repmat)으로 어떻게해야합니까?

+3

'bsxfun'은 너무 재미 있습니다 !!! – Shai

답변

4

permuting하여 매트릭스 중 하나의 크기는 그것을 4x1x4 배열하기 : 대안

permute(bsxfun(@times, A, permute(B, [1 3 2])), [1 3 2]) 
+2

+1하지만 편집 결과가 바뀌었을 것으로 보입니다. 나는 당신의 답을 바로 잡았습니다! –

+0

@EitanT 감사합니다. –

+0

답변과 수정 해 주셔서 감사합니다. –

0

:

>> n = size(A, 1); 
>> res = arrayfun(@(x) A(:, x) * ones(1, n) .* B, 1 : n, 'UniformOutput', false) 

res = 

    [4x4 double] [4x4 double] [4x4 double] [4x4 double] 

발언 : 매트랩 기본 행렬을 의미로 "곱하기" 곱셈은 ​​단순히 res = A' * B입니다. 당신이 물었던 것은 엘리먼트 현명한 곱셈입니다.

관련 문제