Вы можете использовать команду Unix «tail + n» для удаления первых n строк вывода. Этот заголовок выглядит как 10 строк, так что это разделит его.
$ matlab -nosplash -nodesktop -nodisplay -r test | tail +10
Это немного хрупким, хотя, так как предупреждения (например, что «нет окна системы») будет получить раздели, и размер заголовка будет меняться в зависимости от того, что произойдет предупреждения (и эти предупреждения являются полезными диагностика). Кроме того, это предупреждение может быть на STDERR вместо STDOUT, поэтому «tail +9» может быть тем, что вам нужно.
Более надежный подход может заключаться в модификации скрипта Matlab для записи в отдельный файл с использованием fopen/fprintf/fclose. Таким образом, заголовок, предупреждения, ошибки и т. Д. Из Matlab будут отделены от отформатированного вывода, который вы хотите. Чтобы получить вывод «disp», чтобы перейти к этому отдельному дескриптору файла, вы можете записать его с помощью evalc. Исходный файл можно указать с помощью аргумента test() в сообщении -r и переменной $$ env (PID процесса bash), включенной в имя файла, чтобы предотвратить конфликты в многопроцессорной среде.
function test(ppid)
outfile = sprintf('outfile-%d.tmp', ppid);
fh = fopen(outfile, 'w');
myvar = rand(3,4);
str = evalc('disp(myvar)');
fprintf(fh, '%s', str);
fclose(fh);
Чтобы вызвать его из bash, используйте эту форму вызова. (Может быть незначительные проблемы синтаксиса здесь, у меня нет окна Unix, чтобы проверить прямо сейчас.)
% matlab -nosplash -nodisplay -r "test($$)" -logfile matlab-log-$$.tmp
Допустим, ваш Баш ПИД 1234. Теперь у вас есть свой выход в Outfile-1234. tmp и журнал Matlab в matlab-log-1234.tmp. Вставьте их в/tmp, если вы не хотите, чтобы они зависели от pwd. Вы можете расширить это, чтобы создать несколько выходных файлов из одного вызова matlab, сохраняя затраты на запуск, если вам нужно вычислить несколько вещей.
В Octave вы можете использовать флаг '-q'. – sffc