ОБНОВЛЕНИЕ 1 : добавлена рекурсия и поддержка ячеек!
ОБНОВЛЕНИЕ 2 : Добавлена поддержка структур!
ОБНОВЛЕНИЕ 3 : Добавлена поддержка логики, целых чисел, сложных двойных чисел. Добавлены юнит-тесты. Размещено в FileExchange: http://www.mathworks.com/matlabcentral/fileexchange/34076
ПРИМЕЧАНИЕ : проверьте github на https://github.com/johncolby/dput для всех дальнейших обновлений.
Встроенного эквивалента нет, но шаблон для его создания достаточно прост, поэтому я подумал, что начну его создавать. Просто зациклите переменные и напишите строковый эквивалент в зависимости от типа данных.
Я создал для этого git-репозиторий, так что не стесняйтесь его разветвлять и помогать с разными типами данных. Я опубликую его на FileExchange, когда базовые типы будут готовы (double, char, struct, cell, по крайней мере).
https://github.com/johncolby/dput
Начиная с некоторых примеров переменных
x = 1:10;
y = 3;
z = magic(3);
mystr = ['line1'; 'line2'];
mystruct = mystruct = struct('index', num2cell(1:3), 'color', {'red', 'blue', 'green'}, 'misc', {'string' 4 num2cell(magic(3))})
mycell = {1:3, 'test'; [], 1};
Основное использование:
>> dput(x, y, z, mystr, mystruct, mycell)
ans =
x = reshape([1.000000 2.000000 3.000000 4.000000 5.000000 6.000000 7.000000 8.000000 9.000000 10.000000 ],[1 10]) ;
y = reshape([3.000000 ],[1 1]) ;
z = reshape([8.000000 3.000000 4.000000 1.000000 5.000000 9.000000 6.000000 7.000000 2.000000 ],[3 3]) ;
mystr = reshape('lliinnee12',[2 5]) ;
mystruct = struct('index',reshape({reshape([1.000000 ],[1 1]) reshape([2.000000 ],[1 1]) reshape([3.000000 ],[1 1]) },[1 3]),'color',reshape({reshape('red',[1 3]) reshape('blue',[1 4]) reshape('green',[1 5]) },[1 3]),'misc',reshape({reshape('string',[1 6]) reshape([4.000000 ],[1 1]) reshape({reshape([8.000000 ],[1 1]) reshape([3.000000 ],[1 1]) reshape([4.000000 ],[1 1]) reshape([1.000000 ],[1 1]) reshape([5.000000 ],[1 1]) reshape([9.000000 ],[1 1]) reshape([6.000000 ],[1 1]) reshape([7.000000 ],[1 1]) reshape([2.000000 ],[1 1]) },[3 3]) },[1 3]));
mycell = reshape({reshape([1.000000 2.000000 3.000000 ],[1 3]) reshape([ ],[0 0]) reshape('test',[1 4]) reshape([1.000000 ],[1 1]) },[2 2]) ;
Затем вы можете просто вставить текст онлайн, чтобы создать воспроизводимый пример, а другие могут скопировать / вставить обратно в MATLAB для регенерации переменных. Так же, как для R!