2017-03-15 13 views
0

セル配列から.csvを作成する関数(以下を参照)が見つかりました。 cellArray {z、s}の代わりにcellArray {z} {g}を使用するように修正しました。結果の.csvファイルでは、複数の列に分割する必要があるすべてが1つの列にあります。だから私はいくつかの行と1つだけの列があります。私はこれらを分ける方法を知らない。例えば、cellArray {1} {1}には、最初にStringが含まれ、次に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( 'filename'、cellArray)を試してみると、行列に変換できないという不満があります。 – Augusti

答えて

0

は、以下のコードを見てください:これは、関数fprintf(datei、VAR)を変更することによって解決することができる

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、 '、']); そしてcsvを開くときにデリミタとして使用する