[英]I want to export my Data in a Cell Array to an Excel file, as tidy as possible, without semi-colons for new rows
我有一个尺寸为2 x 40的单元格数组,每个单元格都包含一个尺寸为3 x 3的矩阵:
[3x3 double] [3x3 double] [3x3 double] ... [3x3 double]
[3x3 double] [3x3 double] [3x3 double] ... [3x3 double]
现在,我需要打印此细胞阵列并将其展示给我的研究小组。 以下是我要实现的详细示例。
印刷品应清楚且分别地显示单元格中的每个矩阵,以便我们可以更好地研究它,类似于:
[1 2 3] [5 2 3]
[4 5 6] [1 2 2] ...
[7 8 9] [7 8 9]
[5 2 3] [4 5 6]
[3 5 6] [7 2 9] ...
[7 1 9] [5 2 3]
我尝试将Cell转换为Table,不幸的是,这很麻烦,因为它显示了每行新的带有分号的矩阵:
[1 2 3; 4 5 6; 7 8 9]
另外,我尝试使用以下方法将Cell转换为Double:
data = [cell{1,:};cell{2,:}];
导致6 x 120倍,如下所示:
1 2 3 5 2 3
4 5 6 1 2 2 ...
7 8 9 7 8 9
5 2 3 2 5 6
3 5 6 7 2 9 ...
7 1 9 5 2 3
我可以将其导出到Excel文件,但是您仍然可以看到它很麻烦。 我可以剪切并粘贴行4,5,6并将它们移到下面,使其看起来像:
1 2 3 5 2 3
4 5 6 1 2 2 ...
7 8 9 7 8 9
5 2 3 2 5 6
3 5 6 7 2 9 ...
7 1 9 5 2 3
但是我仍然需要每隔三列进行划分,以便实现我想要的目标,这是非常不切实际的:
1 2 3 5 2 3
4 5 6 1 2 2 ...
7 8 9 7 8 9
5 2 3 2 5 6
3 5 6 7 2 9 ...
7 1 9 5 2 3
非常感谢您在这一方面的帮助。 先感谢您。
要显示这样的复杂单元格数组,可以使用celldisp
以易于理解的方式显示单元格。
% Create some example data
D = arrayfun(@(x)rand(3,3), ones(2,2), 'uni', 0);
% Display it
celldisp(D)
另一种可能的显示方式是创建一个自定义的小例程来打印数据。
formatspec = '%10.4f';
format = repmat([repmat([formatspec ' '], [1 size(D{1},2)]), ' '], [1 size(D,2)]);
arrayfun(@(k)fprintf('%s\n', sprintf([format, '\n'], cat(2, D{k,:}).')), 1:size(D,1))
第三种选择,如果您确实要导出到Excel,则需要更改fprintf
语句以创建CSV文件。
fid = fopen('data.csv', 'w');
% Create the format specifier for a row
format = repmat([repmat('%0.4f,', [1 size(D{1}, 2)]), ','], [1 size(D,2)]);
format(end-1:end) = '';
for k = 1:size(D, 1)
fprintf(fid, [format '\n'], cat(2, D{k,:}).');
% Create an empty row
fprintf(fid, ',\n');
end
fclose(fid);
在Excel中加载时的结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.