Matlab 重现函数
Matlab repr function
在 Matlab 中,可以使用 eval
函数将任意字符串计算为代码。例如
s = '{1, 2, ''hello''}' % char
c = eval(s) % cell
有什么方法可以进行逆运算吗?获取任意变量的文字字符串表示形式?即从c
恢复s
?
像
s = repr(c)
这样的 repr
函数内置于 Python 中,但我在 Matlab 中没有遇到过类似的东西,我也没有看到如何自己实现它的明确方法。
我所知道的最接近的东西是像 disp(c)
这样的东西,它打印出 c
的表示形式,但是以 "readable" 格式而不是文字代码格式。
好的,我看到你的痛苦了。
我的建议仍然是提供一种 toString
的功能,利用 fprintf
、sprint
和朋友,但我知道如果你这样做可能会很乏味不知道数据的类型,也需要几个子案例。
为了快速修复,您可以将 evalc
与您提到的 disp
函数结合使用。
像这样的东西应该可以工作:
function out = repr(x)
out = evalc('disp(x)');
end
或者简明扼要
repr = @(x) evalc('disp(x)');
Matlab 中最接近的是 mat2str
,它适用于 数字、字符或逻辑二维数组 (包括向量)。 (它不适用于 ND 数组、元胞数组、结构数组或表)。
示例:
>> a = [1 2; 3 4]; ar = mat2str(a), isequal(eval(ar), a)
ar =
'[1 2;3 4]'
ans =
logical
1
>> a = ['abc'; 'def']; ar = mat2str(a), isequal(eval(ar), a)
ar =
'['abc';'def']'
ans =
logical
1
在此你可以看到:
- 我编写的一个函数,用于获取具有任意嵌套单元格、数字、字符或逻辑数组的二维单元格数组的字符串表示形式。
- 如何在 Octave 中为任意数据类型做您想做的事。
具体取决于您要执行此操作的原因,您的用例可能会通过 matlab.io.saveVariablesToScript
得到解决
Here 是它的文档。
希望对您有所帮助!
在 Matlab 中,可以使用 eval
函数将任意字符串计算为代码。例如
s = '{1, 2, ''hello''}' % char
c = eval(s) % cell
有什么方法可以进行逆运算吗?获取任意变量的文字字符串表示形式?即从c
恢复s
?
像
s = repr(c)
这样的 repr
函数内置于 Python 中,但我在 Matlab 中没有遇到过类似的东西,我也没有看到如何自己实现它的明确方法。
我所知道的最接近的东西是像 disp(c)
这样的东西,它打印出 c
的表示形式,但是以 "readable" 格式而不是文字代码格式。
好的,我看到你的痛苦了。
我的建议仍然是提供一种 toString
的功能,利用 fprintf
、sprint
和朋友,但我知道如果你这样做可能会很乏味不知道数据的类型,也需要几个子案例。
为了快速修复,您可以将 evalc
与您提到的 disp
函数结合使用。
像这样的东西应该可以工作:
function out = repr(x)
out = evalc('disp(x)');
end
或者简明扼要
repr = @(x) evalc('disp(x)');
Matlab 中最接近的是 mat2str
,它适用于 数字、字符或逻辑二维数组 (包括向量)。 (它不适用于 ND 数组、元胞数组、结构数组或表)。
示例:
>> a = [1 2; 3 4]; ar = mat2str(a), isequal(eval(ar), a)
ar =
'[1 2;3 4]'
ans =
logical
1
>> a = ['abc'; 'def']; ar = mat2str(a), isequal(eval(ar), a)
ar =
'['abc';'def']'
ans =
logical
1
在此
- 我编写的一个函数,用于获取具有任意嵌套单元格、数字、字符或逻辑数组的二维单元格数组的字符串表示形式。
- 如何在 Octave 中为任意数据类型做您想做的事。
具体取决于您要执行此操作的原因,您的用例可能会通过 matlab.io.saveVariablesToScript
得到解决Here 是它的文档。
希望对您有所帮助!