Main Content

가변 크기 배열에 대한 코드 생성

코드 생성 시 배열 차원은 고정 크기이거나 가변 크기입니다. 코드 생성기가 차원 크기를 확인할 수 있고 차원 크기가 변하지 않으면 차원은 고정 크기입니다. 배열의 모든 차원이 고정 크기이면 고정 크기 배열입니다. 다음 예제에서 Z는 고정 크기 배열입니다.

function Z = myfcn()
Z = zeros(1,4);
end

첫 번째 차원 크기는 1이고 두 번째 차원 크기는 4입니다.

코드 생성기가 차원 크기를 확인할 수 없거나 차원 크기가 변하는 것으로 확인되면 차원은 가변 크기입니다. 차원 중 하나라도 가변 크기이면 가변 크기 배열입니다.

가변 크기 차원은 유계 또는 비유계입니다. 유계 차원의 상한 크기는 고정되어 있습니다. 비유계 차원의 상한 크기는 고정되어 있지 않습니다.

다음 예에서 Z의 두 번째 차원은 유계의 가변 크기 차원입니다. 상한은 16입니다.

function s = myfcn(n)
if (n > 0)
    Z = zeros(1,4);
else
    Z = zeros(1,16);
end
s = length(Z);

다음 예에서, 컴파일 시점에 n의 값을 알 수 없는 경우 Z의 두 번째 차원은 비유계입니다.

function s = myfcn(n)
Z = rand(1,n);
s = sum(Z);
end

다음을 수행하여 가변 크기 배열을 정의할 수 있습니다.

  • zeros 같은 생성자를 상수가 아닌 차원과 함께 사용

  • 변수를 사용하기 전에 변수에 여러 개의 상수 크기 할당

  • coder.varsize를 사용하여 변수의 모든 인스턴스가 가변 크기를 갖도록 선언

자세한 내용은 Define Variable-Size Data for Code Generation 항목을 참조하십시오.

코드 생성에 가변 크기 배열을 허용할지 여부를 제어할 수 있습니다. 가변 크기 배열에 대한 지원을 활성화하거나 비활성화하기 항목을 참조하십시오.

가변 크기 배열에 대한 메모리 할당

크기가 임계값보다 작은 고정 크기 배열과 가변 크기 배열에 대해 코드 생성기는 스택에 정적으로 메모리를 할당합니다. 크기가 임계값보다 크거나 같은 가변 크기 비유계 배열과 가변 크기 배열에 대해 코드 생성기는 힙에 동적으로 메모리를 할당합니다.

동적 메모리 할당을 허용할지 여부와 이를 코드 생성에서 사용할 시점을 제어할 수 있습니다. Control Memory Allocation for Variable-Size Arrays 항목을 참조하십시오.

코드 생성기는 동적으로 할당된 데이터를 emxArray라는 구조체형으로 표현합니다. 코드 생성기는 emxArray를 만든 후 이와 상호 작용하는 유틸리티 함수를 생성합니다. Embedded Coder®를 사용하는 경우 emxArray 유형 및 유틸리티 함수에 대해 생성된 식별자를 사용자 지정할 수 있습니다. Identifier Format Control (Embedded Coder) 항목을 참조하십시오.

가변 크기 배열에 대한 지원을 활성화하거나 비활성화하기

기본적으로 가변 크기 배열에 대한 지원은 활성화되어 있습니다. 이 지원을 수정하려면 다음을 수행하십시오.

  • 코드 구성 객체에서 EnableVariableSizing 파라미터를 true 또는 false로 설정합니다.

코드 생성 리포트에 표시되는 가변 크기 배열

배열이 고정 크기인지 가변 크기인지는 코드 생성 리포트에서 변수 탭의 크기 열을 보면 알 수 있습니다.

This image shows a code generation report with several kinds of sizes for the second dimension of four arrays. The second dimension of y is fixed-size, A is variable-size, n is fixed-size, and X is unbounded and variable-size.

콜론(:)은 차원이 가변 크기임을 나타냅니다. 물음표(?)는 크기가 비유계임을 나타냅니다. 예를 들어 크기 1×:?는 첫 번째 차원 크기는 고정 크기 1이고 두 번째 차원 크기는 비유계의 가변 크기를 나타냅니다. 기울임꼴은 코드 생성기가 가변 크기 배열을 생성했지만, 실행 중에는 배열 크기가 변하지 않음을 나타냅니다.

This image shows a code generation report with several kinds of sizes for the second dimension of three arrays. y is variable-size, n is fixed-size, and Z is variable-size but did not change size during execution.

관련 항목