assignin
지정된 작업 공간의 변수에 값 할당
설명
assignin(
은 값 ws
,var
,val
)val
을 작업 공간 ws
의 변수 var
에 대입합니다. 예를 들어, assignin('base','x',42)
는 값 42를 MATLAB® 기본 작업 공간에 있는 변수 x
에 대입합니다.
val
의 값을 계산해야 하는 경우, MATLAB은 ws
로 지정된 작업 공간이 아닌, assignin
을 호출하는 함수에서 이 인수의 값을 계산합니다. val
이 함수 핸들인 경우, 이는 assignin
을 호출하는 함수에서 실행할 수 있어야 합니다.
assignin
함수는 다음 작업에 유용합니다.
함수에서 기본 작업 공간으로 데이터 내보내기.
함수 내에서 호출자 함수의 작업 공간에 정의된 변수의 값 변경. 예를 들어, 호출하는 함수의 인수 목록에 있는 변수의 값을 변경할 수 있습니다.
예제
함수에서 기본 작업 공간 변수 업데이트하기
현재 작업 폴더에 있는 파일에서, 숫자 두 개를 추가한 후 기본 작업 공간에 있는 변수 fcnStatus
에 값을 대입하는 함수를 만듭니다.
function c = myAdd(a,b) c = a+b; str = sprintf('%s called with %d,%d (%s)',mfilename,a,b,char(datetime)); assignin('base','fcnStatus',str) end
명령 프롬프트에서 함수를 호출합니다.
n = myAdd(2,3)
n = 5
myAdd
함수가 기본 작업 공간에 할당한 fcnStatus
변수의 값을 표시합니다.
fcnStatus
fcnStatus = 'myAdd called with 2,3 (17-Nov-2017 14:56:14)'
대화 상자의 데이터를 기본 작업 공간에 저장하기
현재 작업 폴더에 있는 파일에서, 이름과 출생 연도를 입력할 수 있는 대화 상자를 표시하고 2050년도의 나이를 계산하는 함수를 만듭니다. assignin
함수는 값을 MATLAB 작업 공간 변수 name
과 age2050
에 내보냅니다.
function mydialog prompt = {'Enter name:','Enter birth year:'}; answer = inputdlg(prompt); n = answer{1}; birthyear = str2double(answer{2}); a = 2050-birthyear; assignin('base','name',n); assignin('base','age2050',a); end
명령 프롬프트에서 함수를 실행하고 데이터를 입력한 후 확인을 클릭합니다.
mydialog
내보낸 값을 작업 공간 브라우저에서 봅니다.
호출하는 함수에 있는 변수의 값 변경하기
입력 나이를 42로 변경하는 함수를 만듭니다. localfcn
내에서 assignin
을 호출하면 메인 함수 updateAge
의 작업 공간에 있는 a
의 값이 변경됩니다.
function updateAge(a) validateattributes(a,{'numeric'},{'scalar'}) fprintf('\tYour age: %d\n',a) localfcn fprintf('\tYour updated age: %d\n',a) end function localfcn assignin('caller','a',42) end
명령 프롬프트에서 메인 함수를 호출합니다.
updateAge(37)
Your age: 37 Your updated age: 42
이 예제에서는 변수를 호출자 작업 공간에 할당하는 방법을 설명하지만, 로컬 함수 localfcn
을 통해 업데이트된 나이를 출력 인수로 반환하는 것이 가장 좋습니다.
지정된 작업 공간에 있는 변수에 함수 핸들 할당하기
현재 작업 폴더에 있는 파일에서, 확률 배열의 최솟값을 구하는 함수를 만듭니다. assignfh
로컬 함수는 함수 핸들 fh
를 minRand
의 작업 공간에 할당합니다. minRand
함수는 입력 인수 n
과 함께 fh
를 실행합니다.
function m = minRand(n) assignfh A = fh(n) m = min(A(:)); end function assignfh fh = @(dim)rand(dim); assignin('caller','fh',fh) end
입력값 2를 사용하여 함수를 호출합니다.
m = minRand(2)
A = 0.3486 0.1423 0.0419 0.0766 m = 0.0419
함수 핸들을 실행하면 난수로 구성된 2×2 배열을 얻게 됩니다.
이 함수의 다른 버전, 즉 minRand2
를 만들어 보겠습니다. 여기에서는 로컬 함수가 함수 핸들 정의에서 rand
함수를 재정의합니다.
minRand
예제와 유사하게, assignfh2
로컬 함수는 fh
를 minRand2
의 작업 공간에 할당합니다. assignfh2
함수는 자신의 작업 공간 내에서 rand
함수를 변수 rand
로 재정의하고 함수 핸들을 만듭니다. 이 동작은 익명 함수와 일치합니다. 즉, 함수 핸들은 이를 만들 당시에 사용 가능한 변수를 사용하여 만들어집니다. 따라서, minRand2
에서 함수 핸들을 실행하면 n
은 assignfh2
에 정의된 rand
배열의 요소를 참조하게 됩니다.
function m = minRand2(n) assignfh2(n) A = fh(n) m = min(A(:)); end function assignfh2(n) rand = 13*ones(n); fh = @(dim)rand(dim); assignin('caller','fh',fh) end
입력값 2를 사용하여 함수를 호출합니다.
m = minRand2(2)
A = 13 m = 13
익명 함수를 호출자 작업 공간에 할당할 때, MATLAB은 함수 핸들의 정의를 호출자 작업 공간의 변수에 넣습니다. assignin
에 대한 호출이 포함된 함수가 함수 핸들을 실행합니다. 이 예제에서는 변수를 호출자 작업 공간에 할당하는 방법을 설명하지만, 로컬 함수 assignfh
를 통해 함수 핸들을 출력 인수로 반환하는 것이 가장 좋습니다.
입력 인수
ws
— 작업 공간
'base'
| 'caller'
작업 공간으로, 'base'
또는 'caller'
로 지정됩니다.
MATLAB 기본 작업 공간 내에 값을 할당하려면 'base'
를 사용하십시오. 명령줄 또는 편집기에서 스크립트를 실행한다고 가정할 때, 기본 작업 공간에는 MATLAB 명령 프롬프트에서 사용자가 생성하는 변수(스크립트에서 생성하는 변수 포함)가 저장됩니다.
호출자 함수의 작업 공간에 변수를 할당하려면 'caller'
를 사용하십시오. 호출자 작업 공간은 현재 실행 중인 함수를 호출한 함수의 작업 공간입니다. 예를 들어, funA
가 funB
를 호출한다고 가정하겠습니다. funB
의 호출자 작업 공간은 funA
입니다. 따라서, assignin
을 사용하고 작업 공간을 'caller'
로 지정하여 funB
에서 funA
에 있는 변수에 값을 할당할 수 있습니다.
참고
호출자 작업 공간에 있는 변수에 할당할 경우 코드를 이해하기가 더 어려워질 수 있으므로, 사용자는 뜻밖의 결과(작업 공간의 예상하지 못한 변수 또는 다시 정의된 변수)를 얻게 되며 성능에 부정적인 영향을 미칩니다. 함수를 통해 변수를 출력 인수로 반환하는 것이 가장 좋습니다.
다음과 같은 경우에는 기본 작업 공간과 호출자 작업 공간이 동일합니다.
명령 프롬프트에서 함수를 호출하고 메인 함수가
assignin
을 호출할 경우.명령 프롬프트에서
assignin
을 호출할 경우.
데이터형: char
| string
var
— 변수 이름
문자형 벡터 | string형 스칼라
변수 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. var
이 지정된 작업 공간에 존재하지 않을 경우, assignin
함수가 이를 만듭니다.
데이터형: char
| string
val
— 값
스칼라 | 배열
변수의 값으로, 스칼라 또는 배열 값으로 지정됩니다. val
은 어떤 데이터형이든 될 수 있으며, MATLAB 표현식을 포함할 수 있습니다.
변수의 값을 계산해야 하는 경우 MATLAB은 ws
로 지정된 작업 공간이 아닌 assignin
에 대한 호출을 포함한 함수에 있는 표현식을 실행합니다. val
이 함수 핸들인 경우, 이는 assignin
을 호출하는 함수에서 실행할 수 있어야 합니다.
예: 5
예: 'hello'
예: rand(3,7)
예: @cos
팁
assignin
함수는 배열의 특정 요소에 값을 할당하지 않습니다. 따라서var
은 배열 인덱스를 포함할 수 없습니다. 이 코드는 오류가 발생합니다.X = 1:8; assignin('base','X(3:5)',-1);
배열의 특정 요소에 값을 할당하려면
evalin
함수를 사용하십시오.evalin('base','X(3:5) = -1')
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
입력 변수
ws
는 컴파일타임 상수여야 하고, 작업 공간은 기본 작업 공간으로 지정되어야 합니다.입력 변수
val
의 데이터형은 외재적 함수에 사용 가능해야 합니다.
버전 내역
R2006a 이전에 개발됨
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)