2013-10-21 2 views
2

나는 상수와 문자열의 정의를 기본적으로 포함하고있는 스크립트를 호출하는 중첩 된 함수를 가지고있다. 이러한 변수를 기본 작업 영역에 전달해야합니다. 나는 그것들을 최상의 해결책이 아닌 global으로 정의 할 수 있다는 것을 안다, 그렇지?여러 변수에 assignin을 사용하는 방법은 무엇입니까?

함수의 출력 인수를 사용하는 일반적인 방법은 필자의 경우 너무 복잡해 보인다. (실제로는 단지 한 번만 호출하므로 코드를 날려 버리지는 않습니다.) 따라서 assigninwho을 사용하려고 생각했지만 셀 배열이나 쉼표로 구분 된 목록에서는 작동하지 않습니다. 아마도 필자는 일부 구문 수정을 누락했을 것입니다.

function myFunction() 

myScriptWithDefinitions; 

% who returns a cell array with all variables from my script 
temp = who; 
% now I try to assign these variables to my base workspace 
% these are my attempts, none of them working 
assignin('base',who); 
assignin('base',temp{:}); 
assignin('base',{temp{:}}); 

... 
end 

필자는 필연적으로 이름 목록과 값 목록을 모두 전달해야한다는 것을 알고 있습니다. 추가 아이디어가 있으십니까?


편집 :

assignin('base',{'A','B'},{2,5}) 
% or 
assignin('base',{'A',2},{'B',5}) 

같은 작동하지 않습니다, 그래서 일반적으로 assignin이 옵션을 선택하지 않습니다 같아요.

+0

그냥 함수의 이름은 assignin이며 세 번째 매개 변수가 있어야합니다 : assignin (ws, 'var', val); 하지만 여전히 질문에 대한 해결책을 찾지 못했습니다 ... –

+0

네, 고마워요. – thewaywewalk

답변

2

assignin을 사용하면 한 번에 하나의 변수 만 할당 할 수 있습니다.

"who"를 사용하면 변수의 이름이 포함 된 셀 배열의 문자열을 얻을 수 있습니다. 이제이 목록이있는 경우 :

myVarList=who; 

당신이 돌이 수를 작업 영역에 변수를 할당합니다

myVarList=who; 

for indVar = 1:length(myVarList) 
    assignin('base',myVarList{indVar},eval(myVarList{indVar})) 
end 

참고 : 누군가가 빠른 교체를 알고 있다면이 ... 평가 후면 - 솔루션 그게 내게 알려주십시오 :)

+0

나는 이것을 구현하려하고 있었다;) 매우 우아하지는 않지만 일하고있다! – thewaywewalk

관련 문제