이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
varargin
가변 길이 입력 인수 목록
구문
설명
varargin
은 함수 정의문의 입력 변수로, 이를 사용하면 함수가 임의 개수의 입력 인수를 받을 수 있습니다. 소문자를 사용하여 varargin
을 지정합니다. 명시적으로 선언한 입력값 다음에 varargin
을 마지막 입력 인수로 포함시켜야 합니다.
함수가 실행되면 varargin
은 1×N 셀형 배열이 되고, 여기서 N은 명시적으로 선언된 입력값 다음에 함수가 받게 되는 입력값 개수입니다. 명시적으로 선언된 입력값 다음에 함수가 입력값을 받지 못한 경우 varargin
은 빈 셀형 배열입니다.
예제
이름이 acceptVariableNumInputs.m
인 파일에 가변적인 개수의 입력값을 받아 그 입력값의 값을 각각 표시하는 함수를 정의합니다.
type acceptVariableNumInputs
function acceptVariableNumInputs(varargin) disp("Number of input arguments: " + nargin) celldisp(varargin) end
여러 개의 입력값을 포함한 함수를 호출합니다.
acceptVariableNumInputs(ones(3),'some text',pi)
Number of input arguments: 3 varargin{1} = 1 1 1 1 1 1 1 1 1 varargin{2} = some text varargin{3} = 3.1416
이름이 definedAndVariableNumInputs.m
인 파일에, 두 개의 입력값을 기본으로 받고 추가 개수의 입력값을 허용하는 함수를 정의합니다.
type definedAndVariableNumInputs
function definedAndVariableNumInputs(X,Y,varargin) disp("Total number of input arguments: " + nargin) formatSpec = "Size of varargin cell array: %dx%d"; str = compose(formatSpec,size(varargin)); disp(str) end
여러 개의 입력값을 포함한 함수를 호출합니다.
definedAndVariableNumInputs(7,pi,rand(4),datetime('now'),'hello')
Total number of input arguments: 5 Size of varargin cell array: 1x3
2개의 입력값을 포함하여 함수를 호출합니다. varargin
은 빈 셀형 배열입니다.
definedAndVariableNumInputs(13,42)
Total number of input arguments: 2 Size of varargin cell array: 0x0
이름이 variableNumInputAndOutput.m
인 파일에 가변적인 개수의 입력값과 출력값을 받는 함수를 정의합니다.
type variableNumInputAndOutput
function varargout = variableNumInputAndOutput(varargin) disp(['Number of provided inputs: ' num2str(length(varargin))]) disp(['Number of requested outputs: ' num2str(nargout)]) for k = 1:nargout varargout{k} = k; end end
입력값 2개와 출력값 3개를 포함한 함수를 호출합니다.
[d,g,p] = variableNumInputAndOutput(6,'Nexus')
Number of provided inputs: 2 Number of requested outputs: 3
d = 1
g = 2
p = 3
입력값이나 출력값 없이 함수를 다시 호출합니다.
variableNumInputAndOutput
Number of provided inputs: 0 Number of requested outputs: 0
확장 기능
사용법 관련 참고 및 제한 사항:
varargin
을 사용하여 진입점(최상위) 함수에 대한 인수를 정의하는 경우, 코드 생성기는 고정된 개수의 입력 인수를 사용하는 C/C++ 함수를 생성합니다. 코드 생성 시 지정하는 인수의 개수에 따라 인수의 고정 개수가 결정됩니다.varargin
에는 쓸 수 없습니다. 입력 인수에 쓰고 싶다면, 먼저 입력 인수를 지역 변수에 복사하십시오.varargin
에 대한 인덱스는 컴파일타임 상수여야 합니다.
사용법 관련 참고 및 제한 사항:
varargin
에는 쓸 수 없습니다. 입력 인수에 쓰고 싶다면, 먼저 입력 인수를 지역 변수에 복사하십시오.varargin
에 대한 인덱스는 컴파일타임 상수여야 합니다.
버전 내역
R2006a 이전에 개발됨HDL 블록 속성 아키텍처가 MATLAB Datapath
로 설정되어 있고 셀형 배열에 대한 다중 인덱스 입력 인수를 가진 MATLAB Function 블록에서 varargin
을 사용할 수 있습니다. 예를 들어 이제 다음 코드 조각에 대한 HDL 코드를 생성할 수 있습니다.
[x, y] = varargin{1:2};
varargin
을 사용하여 가변 개수의 입력 인수를 지정할 때의 성능이 향상되었습니다. 예를 들어, 현재 폴더에 있는 timingTest.m
이라는 파일에 하나의 입력값을 기본으로 받고 추가 개수의 입력값을 허용하는 함수를 만듭니다.
function timingTest(x,varargin) n = 1e6; tic for i = 1:n y = myFun(x,varargin{:}); end toc end function y = myFun(x,varargin) if nargin == 1 y = x; elseif nargin == 3 y = x + varargin{1} + varargin{2}; else y = NaN; end end
성능의 향상 정도는 varargin
이 비어 있는지 여부에 따라 다릅니다. varargin
이 비어 있을 때 성능 개선이 가장 두드러집니다.
비어 있는
varargin
—timingTest(1)
을 실행하여 이 코드의 실행 시간을 측정합니다. 이 코드는 이전 릴리스보다 약 22배 빠릅니다. 대략적인 실행 시간은 다음과 같습니다.R2022b: 0.404초
R2023a: 0.018초
비어 있지 않은
varargin
—timingTest(1,2,3)
을 실행하여 이 코드의 실행 시간을 측정합니다. 이 코드는 이전 릴리스보다 약 2배 빠릅니다. 대략적인 실행 시간은 다음과 같습니다.R2022b: 1.428초
R2023a: 0.734초
코드 실행 시간은 Windows® 10, Intel® Xeon® CPU E5-1650 v4 @ 3.60GHz 테스트 시스템에서 측정했습니다.
HDL 블록 속성 아키텍처가 MATLAB Datapath
로 설정된 MATLAB Function 블록에서 함수에 대한 HDL 코드를 생성할 수 있습니다. 이러한 함수는 입력 인수 varargin
을 사용할 수 있습니다. HDL 함수 checkhdl
은 varargin
을 사용하여 셀형 배열이 올바르게 액세스되고 초기화되었는지 확인할 수 있습니다.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- 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)