我要在换行中显示单元格数组的每个元素,作为Matlab中错误消息的一部分。
classdef MyEnum < int32
enumeration
red (1)
blue (2)
end
end
[m, s] = enumeration('MyEnum');
error('Expected one of the values below: %s', s);
该代码无效,并返回以下错误:“未为'单元'输入定义函数。”
我要显示这样的错误消息。
Expected one of the values below:
'red'
'blue'
答案 0 :(得分:2)
您可以将单元格扩展为comma-separated list的单个输入的error
,并通过重复'%s\n'
适当的次数来动态构建格式说明符。这会将每个字符串用单引号引起来。
s = {'aaa', 'bbbb'};
error(['Expected one of the values below:\n' repmat('''%s''\n', 1, numel(s))], s{:})
给出错误消息
Expected one of the values below:
'aaa'
'bbbb'
在这种情况下,您可以将mat2str
应用于每个单元格的内容,而不用单引号引起来:
s = {'aaa', [1 2 3; 4 5 6]};
t = cellfun(@mat2str, s, 'UniformOutput', false);
error(['Expected one of the values below:\n' repmat('%s\n', 1, numel(t))], t{:})
给予
Expected one of the values below:
'aaa'
[1 2 3;4 5 6]