2014-12-06 4 views
2

Matlab에서 다음 코드를 벡터화하려고합니다. 나는 관련된 매트릭스로 벡터화 할 필요가 없었다. 어떤 연구를하고있는 것 같아서 bsxfun을 사용해야하지만 내 예제에서 작동하는 방식을 이해하려고 노력하고 있습니다. 나는 몇 가지 시도했지만 그것을 알아낼 수 없습니다. 아래는 내가 원하는 출력을 실행하고 생성하는 비 벡터화 된 코드입니다.Vectorize Matlab의 행렬 및 벡터 연산

# W is 500 x 100 matrix 
# delta is 100 x 1 vector 
# alpha is scalar 

for i = 1: 100 
    W(:,i) = W(:, i) - (alpha * delta(i)); 
end 

도움을 주시면 감사하겠습니다. 감사. delta은 행 벡터 (.')로 변환 및 스칼라 곱 alpha : bsxfun

답변

2

쉬운 다음과 같이

W = bsxfun(@minus, W, alpha*delta.'); 

이 작동한다. 얻어진 행 벡터는 을 사용하여 W의 각 행에서 뺍니다. bsxfun을 "암시 적 repmat"으로 볼 수 있습니다. 즉, 행을 W 크기에 맞게 여러 번 복제합니다. 빼기 (@minus)를 수행합니다.

+0

설명을 감사드립니다! – user2743

+1

@ user2743'bsxfun'은 익숙해지면 매우 강력합니다. –

+0

이것을 검토 한 후에 알파 델타가 없어야합니다. ' 내 코드 예제에서와 같이 W 열에서 빼기? – user2743