2012-02-09 2 views
3

Matlab 코더에서 C 코드를 생성 중입니다.Matlab 효율적인 코드 생성

void foo(float* A,B,float* C){ 
//here B is the length of the array 
for(j=0;j<B;j++){ 
    *C+=*(A+j); 
} 
} 
:

function C = foo(A, B) %#codegen 
    for j=1:100, 
    C = C+A(j); 
    end 
end 

생성 된 C에서이 함수의 코드

void foo(float A[100],B,float* C){ 
    for(j=0;j<100;j++){ 
    *C+=A[j]; 
    } 
} 

내가 코드는 다음과 같은 방법으로 효율적으로 생성되고 싶어되어 다음과 같이 나는 기능이

아이디어가 있으십니까?

+1

나는 C 변수가 정의되지 않았기 때문에 MATLAB 코드가 오류를 반환한다고 생각합니다. – yuk

+0

Matlab에서 C 코드를 어떻게 생성합니까? –

답변

3

나는 전체 이야기를 이해하지 않지만, 당신은 왜 실제로

function C = foo(A, B) %#codegen 
    for j=1:B, 
     C = C+A(j); 
    end 
end 
0

내 생각처럼 시작을 B를 사용하고 어떻게되는지 알려하기 위해 MATLAB 코드를 변경하지 않는 matlab에 코더는 벡터화 코드 예상 :

가 다시 시도이 하나 : 당신은 아마 당신이 원하는 등이 될 수 있도록 MATLAB 코드를 최적화하는 데 필요한

function C = foo(A, B) %#codegen 
    C = sum(A(1:100)); 
end 
+0

OP의 예에서'C'는 스칼라입니다 ... 그는'C = sum (A (1 : B));를 원합니다. –

+0

@ JonasHeidelberg, thanks, updated. –

0

C. Matlab 코드는 A에서 100 요소를 액세스합니다. 이것은 생성 된 C가 복제하는 것입니다. B으로 가고 싶다면 Matlab에서 만들어야합니다.

% MATLAB 
function C = foo(A, B) %#codegen 
    for j=1:B, 
    C = C+A(j); 
    end 
end