2013-04-05 4 views
1

MATLAB 질문을 속성 및 값의 긴 목록을 설정합니다.방법 MATLAB에서

속성 = { 'property01', 'property02', 'property03', ...., 'property50'};

및 각 속성에 대한 해당 값.

값 = [val01, val02, val03, ...., val50];

이제 특정 조건에 따라 다양한 속성의 입력을 입력으로 사용하는 기능이 있습니다. 함수를 올바르게 사용하는 주요 제한 사항 중 하나는 입력으로 입력 된 모든 필수 속성을 사용하여 한 번만 호출하는 것입니다. (따라서 for 루프에서 함수를 호출 할 수 없으며 매번 다른 속성 설정을 반복합니다.)

예 : 어떤 조건 세력 날 4 개 속성을 사용하는 경우, 올바른 사용법은 다음과 같습니다

출력 = 된 SomeFuncion (데이터, 'property01', val01, 'property02', val02, 'property03', val03, 'property04' val04);

한 번만 호출되는 함수에 가변 개수의 속성을 제공하려면 어떻게해야합니까?

Mayur Narsude는

답변

0

난 당신이 varargin을 찾고 생각합니다. 이를 함수 정의에서 입력 변수 중 하나로 사용하면 다른 수의 입력으로 함수를 호출 할 수 있습니다.

pv = [properties;values]; 
output = someFunction(data, pv{:}); 

기본적으로, 당신은 2 × n 개의 세포 ARAY를 작성하고이 특성을 선형화 및 대체 값됩니다 때

1

이보십시오.

(즉, 호출 측에 있습니다. 함수 정의 내부, 다른 답변을 제안한다. 나는 당신이 당신의 문제에 대해 물어 된 명확하지 않았다 생각 varargin 사용합니다.)

+0

감사 @nhowe을위한 속임수. 내 경우 pv는 첫 번째 행에 char 문자열을 포함하고 두 번째 행에는 전달하려는 매우 큰 행렬을 포함하는 셀이 있습니다. 간단히 말해서 : properties = string and value = cell 그래서 제안한대로이 함수를 전달하면 전달하기 전에 cell2mat가 변환되지 않고 함수 호출이 값으로 간주되기 때문에 난센스가 발생합니다. 함수에 전달한 후에 수정할 수있는 함수에 액세스 할 수 없습니다. 더 이상의 아이디어? 환호, Mayur –

+0

당신의 의견을 이해하지 못하십니까? 당신은 논쟁의 유형의 구체적인 예를 들어 줄 수 있습니까? – nhowe

+0

> pv = [속성; 값]; > 속성 = [ 'prop1', 'prop2', 'prop3', ..., 'propN']; > 값 = [val1, val2, val3, ..., valN]; > whos val1 > 셀 double 기본적으로 val1 개까지의 valN은 각각 1x2000 값의 행렬을 포함하는 셀입니다.즉, > output = someFunction (data, pv {:}); 오류가 발생합니다. 모든 속성은 올바른 문자열 인 문자열로 전달됩니다. 그러나 모든 값은 함수로서 값에 대한 행렬을 기대하는 셀로 전달됩니다. 그래서 함수에 전달하기 전에 셀의 값을 변환하는 메커니즘이 필요합니다. 분명히 pv에 cell2mat를 사용하는 것은 해결책이 아닙니다. –