2017-03-15 42 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只是使用,作为分隔符