Как получить вывод Matlab, который появился в окне команд

Как получить выход Matlab? НЕ весь вывод (я знаю, дневник может помочь)

Простой пример:

>> st = rng
st = 
     Type: 'twister'
     Seed: 0
    State: [625x1 uint32]

что я хочу, это скопировать вывод в буфер обмена. когда я использую функцию буфера обмена, возникает ошибка:

>> clipboard('copy', st)
Error using mat2str (line 54)
Input matrix must be numeric.
Error in clipboard (line 56)
        stuff = mat2str(stuff); 

Могу ли я легко получить выходные строки в буфер обмена вместо использования мыши, выберите... копировать...

Спасибо!

добавить:

Спасибо, тьфу! Скопируйте представление DISP - это то, что я хотел.

но я мог бы получить что-то в буфере обмена, как это после того, как я запустил команду toString1 (rng):

   >> rng
   ans = 
       Type: 'twister'
       Seed: 11284109
      State: [625x1 uint32]

1 ответ

Решение

Чтобы скопировать матрицу в буфер обмена, я бы рекомендовал MAT2CLIP FileExchange. Он поддерживает не только строки или числовые матрицы, но также смешанный массив ячеек, логические и т. Д.

Это не поддерживает структуры, хотя. Если вам нужно скопировать отдельные поля, вы все равно можете использовать mat2clip. Вы можете установить for-loop через поля структуры и использовать pause вставить поля из буфера обмена.

Если вы заинтересованы в копировании всей структуры или ее представления в DISP, проверьте этот вопрос SO - Как получить результат DISP в качестве возвращаемого параметра в переменную?

Одним из решений этого вопроса является получение вывода DISP в строку, которую вы можете скопировать в буфер обмена с помощью mat2clip (универсально для любого объекта с display метод):

toString = @(x) evalc('disp(x)');
mystring = toString(mystruct);

Другой ответ рекомендует STRUCT2STR от FileExchange. Проверьте также STRUCT2STR рекурсивный.

Другие вопросы по тегам