以另一种输出格式显示单元格数组内容

时间:2016-09-13 22:30:17

标签: matlab cell-array

我正在寻找一种显示单元格数组内容而不是celldisp的方式,它给出了一个输出,如下例所示:

celldisp(stuff)

和典型的输出:

stuff{1} =
    10    70    20    50    50    90    90    30    30    60
stuff{2} =
    80    50    50    50    30    90    40    60    50    60    20    20
stuff{3} =
    20    90    10    80    20    30    30    70

我宁愿像这样打印出来:

10    70    20    50    50    90    90    30    30    60
80    50    50    50    30    90    40    60    50    60    20    20
20    90    10    80    20    30    30    70

这可能吗?非常感谢帮助!

1 个答案:

答案 0 :(得分:2)

一种方法可能是使用num2str,如果没有提供格式说明符,它会自动用空格填充条目。您可以通过循环fprintf调用来利用此行为。

例如:

stuff{1} = [10, 70, 20, 50, 50, 90, 90, 30, 30, 60];
stuff{2} = [80, 50, 50, 50, 30, 90, 40, 60, 50, 60, 20, 20];
stuff{3} = [20, 90, 10, 80, 20, 30, 30, 70];

for ii = 1:numel(stuff)
    fprintf('%s\n', num2str(stuff{ii}));
end

产生:

>> iheartSO
10  70  20  50  50  90  90  30  30  60
80  50  50  50  30  90  40  60  50  60  20  20
20  90  10  80  20  30  30  70

如果你想成为紧凑型的东西,你也可以使用等效的cellfun电话:

cellfun(@(x)fprintf('%s\n', num2str(x)), stuff);