str2sym
기호 표현식을 나타내는 문자열 평가
설명
예제
문자열을 기호 표현식으로서 평가하기
문자열 'sin(pi)'
를 실행합니다. str2sym
은 예상했던 결과를 반환합니다.
str2sym('sin(pi)')
ans = 0
str2sym
은 =
연산자가 대입식이 아닌 방정식을 나타낸다고 가정합니다. 또한, str2sym
은 문자열에 포함된 변수를 작업 공간에 추가하지 않습니다.
'x^2 = 4'
를 평가하여 이 동작을 확인합니다. str2sym
함수가 방정식 x^2 == 4
를 반환하지만 x
는 작업 공간에 나타나지 않습니다.
eqn = str2sym('x^2 = 4')
eqn = x^2 == 4
symvar
을 사용하여 eqn
의 변수를 찾습니다. 변수 var
은 이제 x
를 참조합니다.
var = symvar(eqn)
var = x
eqn
을 var
에 대해 풀고 eqn
의 결과 값을 할당합니다.
varVal = solve(eqn,var)
varVal = -2 2
작업 공간 값을 문자열 입력값에 대입하기
str2sym
은 작업 공간의 값을 입력값에 있는 변수에 대입하지 않습니다. 그러므로 str2sym
은 재현 가능한 출력값을 갖습니다. str2sym
의 출력값에 subs
를 사용하면 작업 공간 값을 대입할 수 있습니다.
y
를 2
로 설정합니다. 그런 다음 'y^2'
을 subs
를 사용한 상태와 사용하지 않은 상태로 평가하여 subs
가 y
에 그 값을 대입하는 것을 확인합니다.
y = 2; withoutSubs = str2sym('y^2')
withoutSubs = y^2
withSubs = subs(str2sym('y^2'))
withSubs = 4
파일의 문자열을 기호 표현식으로서 평가하기
기호 표현식이 파일에 문자열로 저장된 경우, 파일에서 문자열을 읽어 들이고 str2sym
을 사용하여 평가합니다.
파일 mySym.txt
가 다음 텍스트를 포함한다고 가정합니다.
a = 2.431 y = a*exp(t) diff(z(t),t) = b*y*z
str2sym
을 사용하여 mySym.txt
에 있는 표현식을 평가합니다.
filename = 'mySym.txt';
filetext = fileread(filename);
filetext = splitlines(filetext);
str2sym(filetext)
ans = a == 2.431 y == a*exp(t) diff(z(t), t) == b*y*z
str2sym
의 출력값은 작업 공간 값과 관련이 없습니다. 즉, 출력값이 재현 가능합니다. b
에 값을 할당하고 저장된 표현식을 다시 실행하여 이 재현 가능성을 확인합니다.
b = 5; str2sym(filetext)
ans = a == 2.431 y == a*exp(t) diff(z(t), t) == b*y*z
작업 공간의 값 또는 입력 방정식의 값을 사용하려면 문자열을 기호 표현식으로서 평가하기 및 작업 공간 값을 문자열 입력값에 대입하기에서 설명하는 것처럼 subs
를 사용하십시오(먼저 solve
를 사용하여 방정식을 풀어야 함).
문자열 입력값에 있는 함수 실행하기
str2sym
은 입력값에 있는 함수가 경로에 있는 경우 함수를 실행합니다. 그렇지 않은 경우 str2sym
은 예상대로 기호 객체를 반환합니다. 이 동작은 출력값이 재현 가능함을 의미합니다.
파일에서 미분 방정식과 초기 조건을 읽어 들여서 이 동작을 확인합니다. 조건에 대해 방정식을 풉니다. str2sym
은 방정식에 있는 y(t)
를 평가(실행)하지 않으므로 출력값은 재현 가능합니다.
filename = 'mySym.txt';
filetext = fileread(filename);
filetext = splitlines(filetext);
eqn = str2sym(filetext(1))
eqn = diff(y(t), t) == -y(t)
cond = str2sym(filetext(2))
cond = y(0) == 2
ySol = dsolve(eqn,cond)
ySol = 2*exp(-t)
큰 숫자와 고정밀도 숫자를 정확하게 표현하기
MATLAB® 구문 분석기가 자동으로 모든 숫자를 배정밀도로 변환하므로 원래 정밀도를 유지하려면 큰 숫자와 고정밀도 숫자는 문자열로 입력해야 합니다. sym
과 vpa
가 속도가 더 빠르므로 str2sym
대신 sym
을 사용하여 정수를 입력하고 vpa
를 사용하여 부동소수점 숫자를 입력하십시오.
큰 정수의 비를 직접 입력하는 것과 정확한 문자열 표현을 입력하는 것 사이의 오차를 표시합니다.
num = sym(12230984290/38490293482)
num = 5724399718238385/18014398509481984
numExact = sym('12230984290/38490293482')
numExact = 6115492145/19245146741
error = num - numExact
error = -7827162395/346689742765832461975814144
고정밀도 숫자를 직접 입력하는 것과 정확한 문자열 표현을 입력하는 것 사이의 오차를 표시합니다.
num = vpa(8.023098429038490293482)
num = 8.0230984290384910195825796108693
numExact = vpa('8.023098429038490293482')
numExact = 8.023098429038490293482
error = num - numExact
error = 0.00000000000000072610057961086928844451883343504
자세한 내용은 수치 형식에서 기호 형식으로 변환 항목을 참조하십시오. 전체 워크플로는 고정밀도 연산방식으로 준정수 구하기 및 Prime Factorizations 항목을 참조하십시오.
16진수 값과 2진수 값을 10진수 기호 숫자로 변환하기
R2019b부터는 문자형 벡터를 사용하여 16진수 값과 2진수 값을 표현할 수 있습니다. 16진수 값은 0x
또는 0X
접두사로 시작하는 반면 2진수 값은 0b
또는 0B
접두사로 시작합니다. str2sym
을 사용하여 16진수 값과 2진수 값을 10진수 기호 숫자로 변환할 수 있습니다. 자세한 내용은 16진수 값과 2진수 값 항목을 참조하십시오.
16진수 값을 나타내는 문자형 벡터를 만듭니다. 이 값을 10진수 기호 숫자로 변환합니다.
H = '0x2A' D = str2sym(H)
D = 42
2진수 값을 나타내는 문자형 벡터를 만듭니다. 이 값을 10진수 기호 숫자로 변환합니다.
B = '0b101010' D = str2sym(B)
D = 42
입력 인수
symstr
— 기호 표현식을 나타내는 문자열
문자형 벡터 | string형 | 문자형 벡터로 구성된 셀형 배열
기호 표현식을 나타내는 문자열로, 문자형 벡터, string형 또는 문자형 벡터로 구성된 셀형 배열로 지정됩니다.
팁
str2sym
은=
연산자가 대입식이 아닌 방정식을 나타낸다고 가정합니다.str2sym
은 입력값에 있는 변수를 만들지는 않습니다.str2sym('inf')
는 무한대(Inf
)를 반환합니다.str2sym('i')
는 허수1i
를 반환합니다.
버전 내역
R2017b에 개발됨
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)