구조체와 배열의 상수에 대한 코드 생성
코드 생성기는 다음과 같은 경우 상수인 구조체 필드나 배열 요소를 인식하지 못합니다.
다음 코드에서 코드 생성기는 구조체 필드 s.a
와 s.b
가 상수임을 인식합니다.
function y = mystruct()
s.a = 3;
s.b = 5;
y = zeros(s.a,s.b);
구조체 필드가 제어 구문 내에 할당되면 코드 생성기는 상수 필드를 인식하지 못합니다. 이 제한 사항은 상수 요소를 가진 배열에도 적용됩니다. 다음 코드를 살펴보겠습니다.
function y = mystruct(x) s.a = 3; if x > 1 s.b = 4; else s.b = 5; end y = zeros(s.a,s.b);
코드 생성기는 s.a
와 s.b
가 상수임을 인식하지 못합니다. 가변 크기가 활성화된 경우 y
는 가변 크기 배열로 처리됩니다. 가변 크기가 비활성화된 경우 코드 생성기가 오류를 보고합니다.
비 스칼라 인덱싱을 사용하여 배열 요소에 상수가 할당된 경우
다음 코드에서 코드 생성기는 a(1)
이 상수임을 인식합니다.
function y = myarray()
a = zeros(1,3);
a(1) = 20;
y = coder.const(a(1));
다음 코드에서는 a(1)
이 비 스칼라 인덱싱을 사용하여 할당되었으므로 코드 생성기는 a(1)
이 상수임을 인식하지 못합니다.
function y = myarray()
a = zeros(1,3);
a(1:2) = 20;
y = coder.const(a(1));
함수가 상수 요소와 상수가 아닌 요소를 갖는 구조체 또는 배열을 반환하는 경우
상수 필드와 상수가 아닌 필드를 모두 갖는 출력 구조체의 경우 코드 생성기는 상수 필드를 인식하지 못합니다. 이 제한 사항은 상수 요소와 상수가 아닌 요소를 가진 배열에도 적용됩니다. 다음 코드를 살펴보겠습니다.
function y = mystruct_out(x) s = create_structure(x); y = coder.const(s.a); function s = create_structure(x) s.a = 10; s.b = x;
create_structure
가 반환하는 구조체 s
에 상수 필드도 하나 있고 상수가 아닌 필드도 하나 있으므로 코드 생성기는 s.a
가 상수임을 인식하지 못합니다. s.a
가 상수가 아니므로 coder.const
호출이 실패합니다.
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)