2012-01-17 2 views
2

A = A + B가 새 메모리를 할당합니까?

A = A + B; 

A 및 B beeing는 매트릭스를 작성 MATLAB는이 "에서 적절한"즉 요소를 변화 수행, 또는 새로운 메모리는 결과를 저장하도록 할당 될 것인가? 그렇다면 어떻게 피할 수 있습니까?

궁금 이유는 예를 들어, 하나

A = A + B + A^2; 

를 기록, 경우 원래의 데이터를 여러 번 액세스 할 필요가 있고, 따라서 단순히 최초의 첨가에 의해 덮어 쓸 수 없습니다 수 있다는 것입니다.

감사합니다.

+0

"첫 번째 추가로 단순히 덮어 쓸 수 없다"는 것은 무엇을 의미합니까? 당신은 정교 할 수 있습니까? –

+3

'A + B'는 원소 단위의 연산이므로 MATLAB Just-In-Time 엔진은 결과를 저장하기 위해'A'를 재사용 할 수 있습니다. 두 번째 경우에서 'A^2'는 행렬 곱셈이며 단일 요소를 계산하려면 'A'의 전체 행과 열에 대한 액세스가 필요합니다. 기본적으로 원래의 'A'에 대한 액세스가 필요합니다. 즉, 모든 것을 제대로 처리 할 수 ​​없다는 것을 의미합니다. 일반적으로 MATLAB이 의도적으로 문서화되지 않았기 때문에이 레벨에서 MATLAB이 무엇을하는지 짐작하기는 어렵습니다 (부분적으로는 릴리스로 변경 될 수 있고 어떤 의미에서는 저수준 구현 세부 정보로 작업하는 언어의 정신에 위배됩니다). – John

+0

A = A + B + A.^2입니까? – Marc

답변

5

시스템 모니터를 사용하여 컴퓨터에서 테스트했습니다. A=A+B은 새 메모리를 할당하지 않지만, A=A+B+A^2은 새 메모리를 할당하지 않습니다.

C++에서는 메모리 할당없이 첫 번째 코드를 작성하기가 쉽지만 두 번째 코드에서는 불가능합니다.

관련 문제