기호 대입
페이지 내 모두 축소
구문
snew = subs(s,old,new)
snew = subs(s,new)
snew = subs(s)
sMnew = subs(sM,oldM,newM)
sMnew = subs(sM,newM)
sMnew = subs(sM)
설명
기호 스칼라 변수와 기호 함수에 대입하기
예제
는 모든 snew
= subs(s,old,new)old
를 new
로 대체한 s
의 복사본을 반환한 다음 s
를 계산합니다. 여기서 s
는 기호 스칼라 변수나 기호 함수로 구성된 표현식이고 old
는 대체되어야 하는 기호 스칼라 변수나 기호 함수를 지정합니다.
old
및new
가 모두 같은 크기의 셀형 배열 또는 벡터인 경우subs
는old
의 각 요소를 그에 대응하는new
요소로 대체합니다.old
가 스칼라이고new
가 벡터 또는 행렬인 경우subs(s,old,new)
는 모든 연산을 요소별로 수행하여s
의 모든old
요소를new
로 대체합니다.s
의 모든 상수항은 해당 상수에 모두 1로 구성된 벡터 또는 행렬을 곱한 값으로 대체됩니다.
예제
는 snew
= subs(s,new)s
의 모든 디폴트 기호 스칼라 변수를 new
로 대체한 s
의 복사본을 반환한 다음 s
를 계산합니다. 디폴트 변수는 symvar(s,1)에 의해 정의됩니다.
예제
는 snew
= subs(s)s
의 기호 스칼라 변수를 MATLAB® 작업 공간의 할당된 값으로 대체한 복사본 s
를 반환한 다음 s
를 계산합니다. 값이 할당되지 않은 변수는 변수로 남아 있습니다.
기호 행렬 변수와 기호 함수에 대입하기
예제
은 모든 sMnew
= subs(sM,oldM,newM)oldM
을 newM
으로 대체한 sM
의 복사본을 반환한 다음 sM
을 계산합니다. 여기서 sM
은 기호 행렬 변수와 기호 행렬 함수가 포함된 표현식, 방정식 또는 조건이고 oldM
은 대체되어야 하는 기호 행렬 변수와 기호 행렬 함수를 지정합니다. 대입 값 newM
은 oldM
과 크기가 같아야 합니다. (R2021b 이후)
예제
은 sMnew
= subs(sM,newM)sM
의 모든 디폴트 기호 행렬 변수를 newM
으로 대체한 sM
의 복사본을 반환한 다음 sM
을 계산합니다. (R2021b 이후)
예제
은 sMnew
= subs(sM)sM
의 기호 행렬 변수를 MATLAB 작업 공간의 할당된 값으로 대체한 sM
의 복사본을 반환한 다음 sM
을 계산합니다. 값이 할당되지 않은 변수는 변수로 남아 있습니다. (R2023b 이후)
예제
모두 축소
단일 대입
라이브 스크립트 열기
아래의 표현식에서는 a
를 4
로 바꿉니다.
syms a bsubs(a + b,a,4)
ans =
아래의 표현식에서는 a*b
를 5
로 바꿉니다.
subs(a*b^2,a*b,5)
ans =
디폴트 대입 변수
라이브 스크립트 열기
표현식의 디폴트 기호 스칼라 변수에 a
를 대입합니다. 대체할 스칼라 변수 또는 표현식을 지정하지 않으면 subs
는 symvar
을 사용하여 디폴트 변수를 구합니다. x + y
의 경우 디폴트 변수는 x
입니다.
syms x y asymvar(x + y,1)
ans =
그러므로 subs
는 x
를 a
로 바꿉니다.
subs(x + y,a)
ans =
새로운 값으로 표현식 계산하기
라이브 스크립트 열기
기호 스칼라 변수에 새 값을 할당하더라도 그 변수를 포함하는 표현식이 자동으로 계산되지 않습니다. 대신 subs
를 사용하여 표현식을 계산하십시오.
표현식 y = x^2
을 정의합니다.
syms xy = x^2;
x
에 2
를 대입합니다. y
의 값은 여전히 4
가 아닌 x^2
입니다.
x = 2;y
y =
subs
를 사용하여 x
의 새로운 값으로 y
를 계산합니다.
subs(y)
ans =
다중 대입
라이브 스크립트 열기
이전 값과 새 값을 벡터로 지정하여 다중 대입을 수행합니다.
syms a bsubs(cos(a) + sin(b), [a,b], [sym('alpha'),2])
ans =
또는 셀형 배열을 사용하여 다중 대입을 수행합니다.
subs(cos(a) + sin(b), {a,b}, {sym('alpha'),2})
ans =
스칼라에 배열 대입하기
라이브 스크립트 열기
이 표현식의 기호 스칼라 변수 a
를 3×3 마방진 행렬로 바꿉니다. 상수 1
은 모든 요소가 1
인 3×3 행렬로 확장됩니다.
syms a tsubs(exp(a*t) + 1, a, -magic(3))
ans =
벡터, 행렬 또는 배열의 요소에 비 스칼라 값을 대입할 수도 있습니다. 예를 들어, 다음과 같은 2×2 행렬을 만듭니다.
A = sym('A',[2,2])
A =
B = sym('B',[2,2])
B =
행렬 A
의 첫 번째 요소를 행렬 B
로 바꿉니다. 이렇게 대입하려고 하면 subs
는 2×2 행렬 A
를 아래와 같은 4×4 행렬로 확장합니다.
A44 = subs(A, A(1,1), B)
A44 =
subs
는 비 스칼라 또는 행렬에 행렬 크기를 축소하는 스칼라를 대입할 수 없습니다.
구조체형 배열의 기호 스칼라 변수에 대입하기
라이브 스크립트 열기
필드 값으로 기호 표현식을 사용하여 구조체형 배열을 만듭니다.
syms x y zS = struct('f1',x*y,'f2',y + z,'f3',y^2)
S = struct with fields: f1: x*y f2: y + z f3: y^2
기호 스칼라 변수 x
, y
및 z
를 숫자형 값으로 바꿉니다.
Sval = subs(S,[x y z],[0.5 1 1.5])
Sval = struct with fields: f1: 1/2 f2: 5/2 f3: 1
다중 스칼라에 배열 대입하기
라이브 스크립트 열기
기호 스칼라 변수 x
및 y
를 2×2 행렬로 바꿉니다. 벡터 또는 행렬에 대해 다중 대입을 수행하려면 셀형 배열을 사용하여 이전 값과 새 값을 지정합니다.
syms x ysubs(x*y, {x,y}, {[0 1; -1 0], [1 -1; -2 1]})
ans =
이때 x
와 y
가 스칼라이므로 대입이 요소별로 수행되는 것을 볼 수 있습니다.
[0 1; -1 0].*[1 -1; -2 1]
ans = 2×2 0 -1 2 0
방정식의 대입
라이브 스크립트 열기
첫 번째 방정식의 변수에 대해 두 번째 방정식의 그 변수의 값을 사용하여 첫 번째 방정식에서 스칼라 변수를 제거합니다. 두 번째 방정식에서 isolate
를 사용하여 좌변의 변수를 분리하고, 우변을 첫 번째 방정식의 해당 변수에 대입합니다.
먼저 방정식 eqn1
및 eqn2
를 선언합니다.
syms x yeqn1 = sin(x)+y == x^2 + y^2;eqn2 = y*x == cos(x);
isolate
를 사용하여 eqn2
에서 y
를 분리합니다.
eqn2 = isolate(eqn2,y)
eqn2 =
eqn2
좌변에 해당하는 요소에 eqn2
우변에 해당하는 요소를 대입하여 eqn1
에서 y
를 제거합니다.
eqn1 = subs(eqn1,lhs(eqn2),rhs(eqn2))
eqn1 =
함수의 대입
라이브 스크립트 열기
아래의 기호 함수에서 x
를 a
로 바꿉니다.
syms x y asyms f(x,y)f(x,y) = x + y;f = subs(f,x,a)
f(x, y) =
subs
는 기호 함수 식에서 값을 바꾸지만 해당 함수의 입력 인수를 바꾸지는 않습니다.
formula(f)
ans =
argnames(f)
ans =
기호 함수의 인수를 명시적으로 바꿉니다.
syms x yf(x,y) = x + y;f(a,y) = subs(f,x,a);f
f(a, y) =
변수에 구조체의 대응하는 값 대입하기
라이브 스크립트 열기
다음 연립방정식의 해를 검증한다고 가정해 보겠습니다.
syms x yeqs = [x^2 + y^2 == 1, x == y];S = solve(eqs,[x y]);S.x
ans =
S.y
ans =
해를 원래의 방정식에 대입하여 해를 검증합니다.
isAlways(subs(eqs,S))
ans = 2x2 logical array 1 1 1 1
기호 행렬 변수에 배열 대입하기
R2021b 이후
라이브 스크립트 열기
두 2×2 행렬의 곱을 정의합니다. 행렬을 symmatrix
데이터형의 기호 행렬 변수로 선언합니다.
syms X Y [2 2] matrixsM = X*Y
sM =
행렬 변수 및 를 2×2 기호 행렬로 바꿉니다. 벡터 또는 행렬에 대해 다중 대입을 수행하려면 셀형 배열을 사용하여 대체되어야 하는 행렬 변수와 새 값을 지정합니다. 새 값은 대체되어야 하는 행렬 변수와 크기가 같아야 합니다.
S = subs(sM,{X,Y},{[0 sqrt(sym(2)); sqrt(sym(2)) 0], [1 -1; -2 1]})
S =
표현식 S
를 sym
데이터형으로 변환하여 대입된 행렬 곱셈의 결과를 확인합니다.
Ssym = symmatrix2sym(S)
Ssym =
행렬의 특성 다항식
R2021b 이후
라이브 스크립트 열기
기호 숫자로 구성된 행렬 만들기
A = sym([1 4 2; 4 1 2; 2 2 3])
A =
charpoly
함수를 사용하여 A
의 특성 다항식의 계수를 계산합니다.
c = charpoly(A)
c =
그 다음, 를 3×3 기호 행렬 변수로 정의합니다. 계수 c
를 사용하여 다항식 을 만듭니다. 여기서 는 3×3 행렬을 나타내는 부정원입니다.
syms X [3 3] matrixp = c(1)*X^3 + c(2)*X^2 + c(3)*X + c(4)*X^0
p =
subs
함수를 사용하여 다항식 의 에 A
를 대입합니다. 케일리-해밀턴 정리에 따라, 계수 c
는 A
의 특성 다항식이므로 이 대입 결과는 3×3 영행렬이 됩니다. symmatrix2sym
을 사용하여 대입된 표현식을 기호 숫자로 구성된 행렬로 변환합니다.
Y = subs(p,A)
Y =
Z = symmatrix2sym(Y)
Z =
기호 행렬 함수의 변수에 대입하기
R2022a 이후
라이브 스크립트 열기
함수 를 정의합니다. 여기서 는 2×2 행렬이고 는 2×2 단위 행렬입니다. 변수 를 다른 표현식으로 대체하고 새 함수를 계산합니다.
2×2 기호 행렬 변수 를 만듭니다. 기호 행렬 함수 를 만들고, 작업 공간에서 의 기존 정의가 유지되도록 합니다. 다항식 를 할당합니다.
syms A 2 matrixsyms f(A) 2 matrix keepargsf(A) = A*A - 2*A + eye(2)
f(A) =
다음으로 새 기호 행렬 변수 와 를 만듭니다. 새 기호 행렬 함수 를 만들고, 작업 공간에서 와 의 기존 정의가 유지되도록 합니다.
syms B C 2 matrixsyms g(B,C) 2 matrix keepargs
의 변수 를 로 대체합니다. 대입된 결과를 새 함수 에 할당합니다.
g(B,C) = subs(f,A,B+C)
g(B, C) =
subs
를 사용하여 행렬 값 과 에 대해 를 계산합니다.
S = subs(g(B,C),{B,C},{[0 1; -1 0],[1 -1; -2 1]})
S =
표현식 S
를 symmatrix
데이터형에서 sym
데이터형으로 변환하여 대입된 다항식의 결과를 표시합니다.
Ssym = symmatrix2sym(S)
Ssym =
방정식의 기호 행렬 변수와 기호 행렬 함수에 대입하기
R2022b 이후
라이브 스크립트 열기
방정식 를 정의합니다. 여기서 는 3×3 행렬이고 는 3×1 행렬입니다. 에 또 다른 기호 표현식을 대입하고 에 기호 값을 대입합니다. 방정식이 이러한 값에 대해 true인지 확인합니다.
기호 행렬 변수 2개( 및 )를 만듭니다. 기호 행렬 함수 를 만들고 작업 공간에 와 의 기존 정의를 유지합니다. 방정식을 만듭니다.
syms A [3 3] matrixsyms X [3 1] matrixsyms f(X,A) [1 1] matrix keepargseq = diff(diff(f,X),X.') == 2*A
eq(X, A) =
에 를 대입하고 이 표현식에 대한 방정식에서 2차 미분 함수를 계산합니다.
eq = subs(eq,f,X.'*A*X)
eq(X, A) =
에 차수가 3인 힐베르트 행렬을 대입합니다.
eq = subs(eq,A,hilb(3))
eq(X, A) =
isAlways
를 사용하여 방정식이 이러한 값에 대해 true인지 확인합니다. isAlways
는 symfun
또는 sym
유형의 기호 입력값만 받으므로, isAlways
를 사용하기 전에 eq
를 symfunmatrix
유형에서 symfun
유형으로 변환합니다.
tf = isAlways(symfunmatrix2symfun(eq))
tf = 3x3 logical array 1 1 1 1 1 1 1 1 1
기호 행렬 변수가 포함된 표현식 계산하기
R2023b 이후
라이브 스크립트 열기
표현식 을 정의합니다. 여기서 와 는 3×3 행렬입니다. 행렬을 기호 행렬 변수로 만듭니다.
syms X Y [3 3] matrixC = X*Y^2 - Y*X^2
C =
행렬 X
와 행렬 Y
에 값을 할당합니다.
X = [-1 2 pi; 0 1/2 2; 2 1 0];Y = [3 2 2; -1 2 1; 1 2 -1];
subs
를 사용하여 X
및 Y
의 할당된 값이 있는 표현식 C
를 계산합니다.
Cnew = subs(C)
Cnew =
symmatrix
데이터형에서 double
데이터형으로 결과를 변환합니다.
Cnum = double(Cnew)
Cnum = 3×3 -42.8496 -13.3584 -13.4336 -0.7168 3.1416 0.0752 -3.2832 29.8584 16.4248
입력 인수
모두 축소
s
— 기호 입력값
기호 스칼라 변수 | 기호 표현식 | 기호 방정식 | 기호 함수 | 기호 배열 | 기호 행렬 | 구조체
기호 입력값으로, 기호 스칼라 변수, 기호 표현식, 기호 방정식, 기호 함수, 기호 배열, 기호 행렬 또는 구조체로 지정됩니다.
데이터형: sym
| symfun
| struct
old
— 대체될 스칼라 변수
기호 스칼라 변수 | 기호 함수 | 기호 표현식 | 기호 배열 | 셀형 배열
대체될 스칼라 변수로, 기호 스칼라 변수, 기호 함수, 기호 표현식, 기호 배열 또는 셀형 배열로 지정됩니다.
데이터형: sym
| symfun
| cell
new
— 새 값
숫자 | 기호 숫자 | 기호 스칼라 변수 | 기호 함수 | 기호 표현식 | 기호 배열 | 구조체 | 셀형 배열
대입시킬 새 값으로, 숫자, 기호 숫자, 기호 스칼라 변수, 기호 함수, 기호 표현식, 기호 배열, 구조체 또는 셀형 배열로 지정됩니다.
데이터형: sym
| symfun
| single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| struct
| cell
sM
— 기호 입력값
기호 행렬 변수 | 기호 행렬 함수 | 기호 표현식 | 기호 방정식 | 기호 조건
기호 입력값으로, 기호 행렬 변수, 기호 행렬 함수, 기호 표현식, 기호 방정식 또는 기호 조건으로 지정됩니다.
데이터형: symmatrix
| symfunmatrix
oldM
— 대체될 행렬 변수 또는 행렬 함수
기호 행렬 변수 | 기호 행렬 함수 | 기호 표현식 | 셀형 배열
대체될 행렬 변수 또는 행렬 함수로, 기호 행렬 변수, 기호 행렬 함수, 기호 표현식 또는 셀형 배열로 지정됩니다.
데이터형: symmatrix
| symfunmatrix
| cell
newM
— 새 값
숫자 | 기호 숫자 | 기호 행렬 변수 | 기호 행렬 함수 | 기호 표현식 | 기호 배열 | 셀형 배열
대입시킬 새 값으로, 숫자, 기호 숫자, 기호 행렬 변수, 기호 행렬 함수, 기호 표현식, 기호 배열 또는 셀형 배열로 지정됩니다. newM
은 oldM
과 크기가 같거나 sM
의 디폴트 기호 행렬 변수와 크기가 같아야 합니다.
데이터형: sym
| symmatrix
| symfunmatrix
| single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| struct
| cell
팁
subs(s,__)
는 s를 수정하지 않습니다.s
를 수정하려면s = subs(s,__)
를 사용하십시오.s
가 일변량 다항식이고 new가 숫자형 행렬인 경우polyvalm(sym2poly(s),new)
를 사용하여s
를 행렬로 계산하십시오. 모든 상수항은 해당 상수에 단위 행렬을 곱한 값으로 대체됩니다.R2022b부터 도함수 또는
diff
함수를 포함하는 기호 대입은 대입할 기호 객체의 입력 순서를 따릅니다. 예를 들어, 다음 코드는diff
함수를 포함하는 기호 대입을 수행합니다.R2022b 이전에는 코드가 다음 출력값을 반환합니다.syms m k x(t)syms x_t x_t_ddoteqSHM = m*diff(x(t),t,2) == -k*x(t);eqSHMnew = subs(eqSHM,[x(t) diff(x(t),t,2)],[x_t x_t_ddot])
eqSHMnew = m*x_t_ddot == -k*x_t
R2022b부터는 코드가 다음 출력값을 반환합니다.
출력값의 차이가 있는 이유는 이제eqSHMnew =0 == -k*x_t
subs
가x(t)
에x_t
를 먼저 대입해서diff(x_t,t,2)
가 되고, 그래서 결과가0
이 되기 때문입니다. 이전 릴리스와 같은 대입 결과를 얻으려면 먼저diff(x(t),t,2)
항을 지정하여x(t)
항보다 먼저 대입되도록 하십시오.eqSHMnew = subs(eqSHM,[diff(x(t),t,2) x(t)],[x_t_ddot x_t])
eqSHMnew = m*x_t_ddot == -k*x_t
버전 내역
R2006a 이전에 개발됨
모두 확장
R2023b: 기호 행렬 변수에 작업 공간 값 대입
구문 subs(sM)
을 사용하여 sM
의 기호 행렬 변수와 기호 행렬 함수에 MATLAB 작업 공간의 할당된 값을 대입한 다음 sM
을 계산합니다. 값이 할당되지 않은 변수는 변수로 남아 있습니다. 예제는 기호 행렬 변수가 포함된 표현식 계산하기 항목을 참조하십시오.
R2022b: 기호 방정식 또는 기호 조건에서 기호 행렬 변수와 기호 행렬 함수 대입
subs
함수는 symmatrix
또는 symfunmatrix
유형의 기호 방정식 또는 기호 조건을 첫 번째 입력 인수로 받습니다. 예제는 방정식의 기호 행렬 변수와 기호 행렬 함수에 대입하기 항목을 참조하십시오.
R2022a: 기호 행렬 함수에서 변수 대입
subs
함수는 symfunmatrix
유형의 기호 행렬 함수를 첫 번째 입력 인수로 받습니다. 예제는 기호 행렬 함수의 변수에 대입하기 항목을 참조하십시오.
R2021b: 기호 표현식에서 기호 행렬 변수 대입
subs
함수는 symmatrix
유형의 기호 표현식을 첫 번째 입력 인수로 받습니다. 예제는 기호 행렬 변수에 배열 대입하기 항목과 행렬의 특성 다항식 항목을 참조하십시오.
참고 항목
함수
- double | lhs | rhs | simplify | subexpr | vpa
도움말 항목
- 기호 표현식에서의 대입
- 기호 표현식에서 변수 대입하기
- 기호 행렬의 요소에 대입하기
- Substitute Scalars with Matrices
- subs를 사용하여 기호 표현식 계산하기
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:
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
- Deutsch
- English
- Français
- United Kingdom (English)
Contact your local office