strprintРаспечатайте в строку
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
strprint(<All>, <Unquoted>, <NoNL>, <KeepOrder>, object1, object2, …)
strprint(objects) возвращает строку, которую print(objects) отобразил бы на экране.
strprint возвращает строку, которая содержит вывод print, отправил бы на экран для тех же аргументов. Эта строка содержит символы `\n', если вывод состоял бы из нескольких строк.
В системах Windows® каждому \n предшествует \r, потому что это - традиционная комбинация конца строки, поскольку это - комбинация конца строки, наследованная от CP/M. Примеры в этой документации принимают систему как UNIX®. Также обратите внимание, что с Набором активированного, \r, \n, \t и \b не будут отображены в строке.
Все опции и зависимости от переменных интерпретированы, как описано в документации print. Особенно, это означает, что PRETTYPRINT влияет на вывод strprint. Перегрузка print учтена. Смотрите ?print для деталей.
strprint чувствителен к переменным окружения DIGITS, PRETTYPRINT и TEXTWIDTH, и к выходным настройкам Pref::floatFormat, Pref::keepOrder и Pref::trailingZeroes.
Строка, возвращенная strprint, когда распечатано с опцией Unquoted, приводит к тому же выводу, как операнды имели бы во-первых:
s := strprint(a*x^2-7): print(Unquoted, s)
2 a x - 7
Это может использоваться, чтобы объединить несколько выходных параметров:
s1 := strprint(a*x^2-7):
s2 := _concat("-" $ TEXTWIDTH)."\n":
s3 := strprint(sin(1/x)):
print(Unquoted, s1.s2.s3)2 a x - 7 --------------------------------------------------------------------------- / 1 \ sin| - | \ x /
В примере выше, вы видите, что вывод strprint не содержит пробелы, обычно используемые для центрирования. Вывод в первом примере был сосредоточен, потому что это использовало только часть текстовой ширины, в то время как строка s1.s2.s3 во втором примере охватывает общую ширину строки и поэтому распечатан выравнивание по левой границе.
В демонстративных целях давайте запишем область, которая помещает выражение в поле. Мы используем то, что strprint возвращает строки начиная с новой строки output::fence и индексируемого присвоения на строки:
domain box
print := proc(e)
local ex, str, w;
save TEXTWIDTH;
begin
if TEXTWIDTH > 15 then
TEXTWIDTH := TEXTWIDTH - 4;
end_if;
ex := extop(e, 1);
str := strprint(All, ex);
w := str[5]+4;
str := output::fence("| ", " |",
"\n".str[1]."\n",
str[5], str[6]+1);
str[1..w] := "+"._concat("-"$w-2)."+";
str[-w-1..-2] := "+"._concat("-"$w-2)."+";
str;
end_proc;
new := x -> new(dom, x);
end_domainprint(Plain, box(a), box(sin(1/x)))
+----------+
+---+ | / 1 \ |
| a |, | sin| - | |
+---+ | \ x / |
+----------+
print(Plain, box(box(hold(E=m*c^2))))
+--------------+ | +----------+ | | | 2 | | | | E = m c | | | +----------+ | +--------------+
Как последний пример, мы реализуем метод печати для матриц по ℤ 5:
M5 := Dom::Matrix(Dom::IntegerMod(5))
![]()
Функция стандартного вывода просто помещает “mod 5” позади каждой записи, наследованной от выходного метода Dom::IntegerMod(5):
A := M5([[1,2,3,4],[5,6,7,8],[-2,-3,0,1]])

Мы теперь заменяем этот метод:
M5::print := proc(A)
local str, h1, w1, h, w, b;
begin
[str, h1, w1, h, w, b] := strprint(All, expr(A));
_concat(str, " " $ w, "[mod 5]");
end_proc:print(A):
/ 1, 2, 3, 4 \
| |
| 0, 1, 2, 3 |
| |
\ 3, 2, 0, 1 /
[mod 5]
Также мы можем установить [mod 5] прямо ниже скобок:
M5::print := proc(A)
local str;
begin
str := strprint(expr(A));
str[-1..-1] := " [mod 5]";
str
end_proc:print(A):
/ 1, 2, 3, 4 \ | | | 0, 1, 2, 3 | | | \ 3, 2, 0, 1 / [mod 5]
|
Любые объекты MuPAD® |
|
Когда опция
Пример 2 содержит пример кода, который использует эту информацию. |
|
Отобразите символьные строки без кавычек и с расширенными управляющими символами |
|
Как |
|
Отобразите операнды сумм (типа |
DOM_STRING или список DOM_STRING и пяти целых чисел.