2011-08-11 5 views
0

어떻게 든이 공식을 최적화 할 수 있습니까? [((사람 승 (NX2 더블MATLAB에서 행렬 곱셈을 최적화하는 방법은 무엇입니까?

합 - 나는 그것을 여러 번 평가하고는 ...

w 많은 시간이 소요됩니다 -되는 N × N 이중

x - 더블

phis을 1xN을 크기, (x, 1) 1]), :). * phis, 2)

+0

x가 무엇입니까? – carlosdc

+0

코드에서도 N, x, w 및 phis 중 어느 것이 각 호출마다 달라 집니까? –

+1

Matlab ** IS ** 행렬 곱셈에 최적화되어 있습니다 - 이름의 "Mat"부분이 무엇을 의미합니까! 그래서'* .','sum'과 다른 모든 것들을 사용하여 재발행하는 대신에 아래의 다른 Jonas에서 보여 주듯이 행렬 곱셈'*'을 사용한다면 훨씬 더 빨라야합니다 ;-) –

답변

5

각 행의 스칼라 생성물은 phisw. 선형 대수학을 사용하여 쉽게이 작업을 수행 할 수 있습니다.

out = phis * w'; 

matrix multiplication 당신이 당신의 코드를해야 sum, onessize에 훨씬 빨리 호출을 절약 할 수 있습니다. 또한 선형 대수 연산은 Matlab에서 매우 빠르다. 프로그램이 역사적으로 최적화되어 있기 때문이다.

+0

나는 ' 이것이 올바르게 작동 할 것이라고 생각하지 마십시오. w를 phap의 크기로 다시 매핑하고 각 행에 대한 합계를 계산해야합니다. – Yekver

+0

@ Yekver : 행렬과 벡터 사이의 [스칼라 제품] (http://en.wikipedia.org/wiki/Scalar_product)이 정확하게 "크기 재 매핑"이라는 작업을 수행하므로 ** ** ** 정확하게 ** 작동합니다 phis의 계산 및 그들의 합계 ". 그리고 MATLAB에서 스칼라 제품은 다른 Jonas가 보여준 것만큼이나 단순합니다. –

+0

@Jonas : http://www.mathworks.com/help/techdoc/ref/arithmeticoperators.html에 대한 링크를 추가하는 방법에 대해 설명합니다. 대답? 질문 제목은 "행렬 곱셈"이라고 쓰고, 그 도움말 페이지는 행렬 곱셈이라고 설명합니다. –

관련 문제