2017-03-15 75 views
0

我發現了一個函數(見下文),它在單元陣列中創建.csv。我修改它以便與cellArray {z} {g}而不是cellArray {z,s}一起工作。在生成的.csv文件中,應該分成幾列的所有內容都位於一列中。所以我只有一列有幾行。我不知道如何分開這些。例如,在數組Array {1} {1}中首先包含一個字符串,然後像13.4156那樣。我怎麼能啓用cellArray {z} {g}中的每個單元最終在. csv文件中的單獨單元中?cellArray to csv

function cell2csv(filename, cellArray, delimiter) 
    % Writes cell array content into a *.csv file. 
    % 
    % CELL2CSV(filename,cellArray,delimiter) 
    % 
    % filename  = Name of the file to save. [ i.e. 'text.csv' ] 
    % cellarray = Name of the Cell Array where the data is in 
    % delimiter = seperating sign, normally:',' (default) 
    % 
    % by Sylvain Fiedler, KA, 2004 
    % modified by Rob Kohr, Rutgers, 2005 - changed to english and fixed delimiter 
    if nargin<3 
     delimiter = ','; 
    end 

    datei = fopen(filename,'w'); 
    for z=1:size(cellArray,1) 
     for g=1:length(cellArray{z}) 
      var = eval(['cellArray{z}{g}']); 

     if size(var,1) == 0 
      var = ''; 
      end 

     if isnumeric(var) == 1 
      var = num2str(var); 
     end 

     fprintf(datei,var); 

     end 
     fprintf(datei,'\n'); 
    end 
    fclose(datei); 
+0

你爲什麼刪除前面的問題?這是什麼版本的MATLAB?哪個OS?你可以使用'xlswrite'嗎?它處理的混合數據類型要比'dlmwrite'或'csvwrite'好得多(你應該使用它)... –

+0

首先,我想我在另一個題目下寫了這個問題,我想問另一個問題。我的錯。當我嘗試xlswrite('文件名',cellArray)它抱怨說它不能轉換爲矩陣。 – Augusti

回答

0

看看下面的代碼:

A = cell(3,1); 
for ind1 = 1:3 
    A{ind1} = {ind1,ind1,'cat'}; 
end 

%% Approach 1 - xlswrite 
B = vertcat(A{:}); 
xlswrite('somefile.xls',B); 

%% Approach 2 - printf 
% A is 3x1 cell of (1x3 cell) objects 
B = cellfun(@(x)[num2str(x) ','], vertcat(A{:}),'UniformOutput',false); 
% B is 3x3 cell of (1x1 cell) objects 
C = num2cell(B,2); 
% C is 1x3 cell of (3x1 cell) objects 
fid = fopen('somefile.csv','w'); 
for ind1 = 1:size(C,1) 
    fprintf(fid, '%s\n',[C{ind1}{:}]); 
end 
fclose(fid); 
0

這可以通過改變fprintf中來解決(datei,VAR); - > fprintf(datei,[var,',']); 然後當打開csv只是使用,作爲分隔符