Есть ли команда для очистки рабочего листа от всех выходных данных? (без использования графического интерфейса)
Я использую лист (не режим документа). Я знаю, что можно сделать Edit>Remove Output>From Worksheet
"Удаляет вывод Maple из всех групп выполнения на листе".
Но я не мог найти команду, чтобы сделать это. Мне нужно сделать это, так как, когда я запускаю цикл, как в
for i from 1 to n do
some_function();
od
И функция выше скажет, печатает на экран (то есть рабочий лист в настоящее время открыт) много информации, затем рабочий лист замедляется, и я действительно не хочу видеть запись всех вызовов, собранных каким-либо образом. Мне просто нужно видеть отпечатки с одной итерации за раз.
(У Maple есть и другие проблемы с большим накоплением выходных данных в рабочей таблице, но это для другой темы).
Я хотел бы сделать что-то вроде этого
for i from 1 to n do
some_function();
delete_all_output_in_current_worksheet();
od;
Таким образом, вывод только одного вызова отображается как some_function
бежит.
В Matlab это легко сделать с помощью clc, который очищает командные окна в Matlab.
Есть ли что-то подобное в Maple?
Клен 2018.1 на окнах.
1 ответ
Не существует программного способа очистки всех выходных данных текущего рабочего листа.
Но вы можете получить результат от some_function()
(каждый раз через цикл) для встроенных компонентов, например. TextBox, MathContainer и т. Д.
Вам даже не нужно вручную вставлять такие компоненты из палитр. Вместо этого вы можете использовать DocumentTools:-Tabulate
Команда для программной вставки табличной коллекции компонентов сразу после текущей группы выполнения.
Например, в качестве 1D-кода на рабочем листе эти блоки кода могут быть в трех отдельных группах выполнения.
restart;
а также,
some_function:=proc(i)
int( sin(x)^i, x);
end proc:
Leafcutoff := 150:
а также,
# Put all this in the same Execution Group
for i from 1 to 111 by 10 do
res[i] := some_function(i);
K := MmaTranslator:-Mma:-LeafCount(res[i]);
if K <= Leafcutoff then
L := res[i];
else
L := sprintf("LeafCount > %a",Leafcutoff);
end if;
DocumentTools:-Tabulate(
[["i","LeafCount","result"],
[sprintf("%a",i), K, L]],
':-weights'=[10,10,40],
':-fillcolor'=((T,i,jj)->`if`(i=1,"grey",
"white")),
':-widthmode'=':-pixels',
':-width'=600);
Threads:-Sleep(1.5); # delay at least 1.5 sec
end do:
DocumentTools:-Tabulate([[]]):
I put in a time-delay of 1.5 seconds just to illustrate it working. You can adjust that, or remove it.
Последний звонок Tabulate
is only there to blank it out, when the loop is finished.
The GUI Table inserted by Tabulate
actually appears in a region right after the Execution Group. Only one such region appears, per Execution Group. Basically, each call to Tabulate overwrites that region.
Если вы изменили end do:
в end do;
then all the regular output would also be shown, as usual for a loop.