如何显示错误,包括单元格数组的内容

时间:2019-01-24 17:02:59

标签: arrays matlab cell

我要在换行中显示单元格数组的每个元素,作为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'

1 个答案:

答案 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]