Вычислить строку, представляющую символическое выражение
Вычислить строку '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
Найти переменную в eqn с помощью symvar. Переменная var теперь относится к x.
var = symvar(eqn)
var = x
Присвоить значения из eqn путем решения eqn для var и назначение результата.
varVal = solve(eqn,var)
varVal = -2 2
str2sym не заменяет значения из рабочей области переменными во входных данных. Поэтому str2sym имеет воспроизводимый выход. Вместо этого заменяйте значения в рабочей области с помощью subs на выходе str2sym.
Набор 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
Вычислить выражения в mySym.txt использование str2sym.
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 ® автоматически преобразует все числа в двойную точность, сохраняйте исходную точность, вводя большие числа и высокоточные числа в виде строк. Вместо str2sym, введите целые числа с помощью sym и чисел с плавающей запятой с использованием vpa потому что 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
Дополнительные сведения см. в разделе Преобразование цифр в символы. Полные рабочие процессы см. в разделе Численные вычисления с высокой точностью и первичными факторизациями.
Начиная с R2019b, можно представлять шестнадцатеричные и двоичные значения с помощью символьных векторов. Шестнадцатеричные значения начинаются с 0x или 0X префикс, в то время как двоичные значения начинаются с 0b или 0B префикс. Затем можно преобразовать шестнадцатеричные и двоичные значения в символьные десятичные числа, используя str2sym. Дополнительные сведения см. в разделе Шестнадцатеричные и двоичные значения.
Создайте символьный вектор, представляющий шестнадцатеричное значение. Преобразование значения в символьное десятичное число.
H = '0x2A' D = str2sym(H)
D = 42
Создайте символьный вектор, представляющий двоичное значение. Преобразование значения в символьное десятичное число.
B = '0b101010' D = str2sym(B)
D = 42
symstr - Строка, представляющая символическое выражениеСтрока, представляющая символьное выражение, указанное как символьный вектор, строка или массив ячеек символьных векторов.
str2sym предполагает, что = оператор представляет уравнение, а не назначение.
str2sym не создает переменные, содержащиеся во входных данных.
str2sym('inf') возвращает бесконечность (Inf).
str2sym('i') возвращает мнимое число 1i.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.