Main Content

coder.nullcopy

코드 생성 시 초기화되지 않은 변수 선언

설명

예제

X = coder.nullcopy(A)A의 유형, 크기 및 실수/복소수 여부만 X에 복사하고 요소 값은 복사하지 않습니다. 이 함수는 메모리 초기화 오버헤드를 발생시키지 않으면서 X에 대한 메모리를 사전할당합니다. 코드 생성 시 coder.nullcopy 함수는 초기화되지 않은 변수를 선언합니다. MATLAB®에서 coder.nullcopy는 X가 A와 같도록 하는 입력값을 반환합니다.

X가 가변 크기 배열을 포함하는 구조체 또는 클래스인 경우 각 배열의 크기를 할당해야 합니다. coder.nullcopy는 해당 인수의 배열 또는 중첩 배열 크기를 결과값에 복사하지 않습니다.

참고

X를 함수나 프로그램에서 사용하려면 그 전에 X 내 데이터를 완전히 초기화해야 합니다. 변수의 모든 요소를 할당하지 않고 coder.nullcopy를 통해 변수를 선언하면 프로그램에서 비결정적 동작이 발생합니다. 자세한 내용은 How to Eliminate Redundant Copies by Defining Uninitialized Variables 항목을 참조하십시오.

예제

모두 축소

이 예제에서는 배열의 어떤 값도 초기화하지 않고 배열 유형 변수를 선언하는 방법을 보여줍니다.

다음 함수에 대한 코드를 생성하려면, outp에 첨자를 사용하기 전에 출력 변수 outp를 double형 실수로 구성된 n×n 배열로 완전히 선언해야 합니다. 배열의 어떤 값도 초기화하지 않고 이 선언을 수행하기 위해 coder.nullcopy를 사용합니다.

function outp = foo(n) %#codegen

outp = coder.nullcopy(ones(n));
for idx = 1:n*n
   if mod(idx,2) == 0
      outp(idx) = idx;
   else
      outp(idx) = idx + 1;
   end
end

다음 codegen (MATLAB Coder) 명령을 실행하여 코드를 생성하고 리포트를 실행합니다.

codegen -config:lib -c foo -args {0} -launchreport 

코드 생성 리포트에서 Trace Code를 클릭하여 MATLAB 코드와 생성 코드 간의 매핑을 확인합니다. 코드 추적성 기능을 사용하려면 Embedded Coder®가 있어야 합니다.

다음 그림에는 coder.nullcopy를 사용할 때와 사용하지 않았을 때 생성된 코드가 비교되어 있습니다. coder.nullcopyones와 함께 사용하면 각 요소를 1로 초기화하지 않고도 배열 outp의 크기를 지정할 수 있습니다.

Code mapping between MATLAB code and generated C code when using coder.nullcopy

coder.nullcopy를 사용하지 않으면 생성 코드는 outp의 모든 요소를 1로 명시적으로 초기화합니다(라인 32~35 참조).

Code mapping between MATLAB code and generated C code without using coder.nullcopy

참고

경우에 따라 MATLAB 코드에 coder.nullcopy 지시문을 명시적으로 포함하지 않더라도 코드 생성기가 coder.nullcopy에 상응하는 최적화를 자동으로 수행합니다.

입력 인수

모두 축소

복사할 변수로, 스칼라, 벡터, 행렬 또는 다차원 배열로 지정됩니다.

예: coder.nullcopy(A);

데이터형: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | class
복소수 지원 여부:

제한 사항

  • 희소 행렬에는 coder.nullcopy를 사용할 수 없습니다.

  • 오버로드된 괄호를 지원하는 클래스 또는 table처럼 인덱싱을 사용해서 데이터에 액세스해야 하는 클래스에는 coder.nullcopy를 사용할 수 없습니다.

확장 기능

C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.

GPU 코드 생성
GPU Coder™를 사용하여 NVIDIA® GPU용 CUDA® 코드를 생성할 수 있습니다.

버전 내역

R2011a에 개발됨