是否有Matlab函数将任何数据结构转换为字符串?

Nag*_*gel 7 matlab

我在Matlab中寻找一个用于错误消息的函数,如下所示:

error(['Invalid value for someVariable: ' wantedFunction(someVariable)]);
Run Code Online (Sandbox Code Playgroud)

我希望wantedFunction能够接受字符串,数组,单元格数组,理想情况下甚至是结构数组.

现在,我正在使用num2str,但这对细胞不起作用.我认为我想要的可以完成sprintf,但我还没弄明白.我想我可以编写自己的函数,但如果已经有一种方法可以在Matlab中执行此操作,那将是多余的.有任何想法吗?

Rod*_*uis 14

是的,虽然这不是直截了当的.你必须disp结合使用evalc:

string = evalc(['disp(someVariable)'])
Run Code Online (Sandbox Code Playgroud)

您可以将其转换为更易于管理的形式:

toString = @(var) evalc(['disp(var)']);
Run Code Online (Sandbox Code Playgroud)

所以,举个例子:

>> var = {rand(3,1), 'A', struct('test', 5)};
>> error(['Invalid value for var: ' toString(var)])

??? Invalid value for var:     [3x1 double]    'A'    [1x1 struct]
Run Code Online (Sandbox Code Playgroud)