2013-02-22 2 views
0

matlab에 구조체를 미리 할당하는 것이 문제입니다. struct, matlab에 대한 사전 할당

 time calls line 

       2 65 sizeofTLS= 10000; 
    < 0.01  2 66 LaserS(sizeofTLS).POI(n)={0}; 
     0.03  2 67 LaserS(sizeofTLS).dis(n)={0}; 
     0.04  2 68 LaserS(sizeofTLS).plane(n)={0}; 
        69 
        70 
    < 0.01  2 71 for it=1:sizeofTLS 
    16.74 2823212 72  LaserS(it).POI(1:n)={0}; 
    16.91 2823212 73  LaserS(it).dis(1:n)={0}; 
    16.88 2823212 74  LaserS(it).plane(1:n)={0}; 
     1.04 2823212 75 end 

어떻게 내가 (72,73,74)을 향상시킬 수 있습니다 MATLAB 프로파일에 다음 코드를 참조하십시오?

답변

2

구조체를 미리 할당하는 가장 좋은 방법은 다음과 같은 구문입니다 :

myEmptyCell = num2cell(zeros(1,n)); 
b   = repmat(struct('POI', myEmptyCell ,... 
          'dis', myEmptyCell,... 
          'plane', myEmptyCell) , sizeofTLS, 1); 

이 ~ 내 노트북에 미리 할당하지 않는 것보다 10 배 빠르다.

+0

@ jerad 어떻게하면 코드에 사용할 수 있습니까? – Shahgee

+0

도움이 될까요? – jerad

+0

아니요 완전히 다른 대답을줍니다. – Shahgee

관련 문제