簡體   English   中英

我想將單元格數組中的數據導出到Excel文件中,並盡可能整潔,而沒有用於新行的分號

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM