2017-05-10 22 views
0

[OK]を、Pythonのから来て前にMATLABを使用したことがないので、MATLABを使用してCSVファイルにデータを書き込むために必要以上に困難であるようにそれはそう...MATLAB混合英数字の文字列、スカラー配列と書き込みのcsv、NaNを

ので、私のデータは次のようになります:

col1  A2A B2 CC3  D5 
asd189  123 33 71119 18291 
as33d  1311 31 NaN  1011 
asd189  NaN 44 79  191 

英数字の文字列で構成されたN個のヘッダー列があります。 長さMの最も左の列が英数字の文字列で構成されています。 NUMERICデータの(M-1)x(N-1)配列を持ち、可能なNaNを持ちます。

これをcsvに書き込むコードを教えてください。 Excelがインストールされていないクラスタ上にあるため、xlswrite関数を使用することはできません。実際には、実際のデータ分析に取り掛かりたいだけです。ありがとう

答えて

0

csvwriteを使用して直接行列(セル配列ではない)のみを書き込むことができ、xlswriteにExcelがインストールされている必要があると言われるので、低レベルの操作で残ります。あなたは以下のあなたの例のファイルhere、およびコードをテキストに書き込むためのチュートリアルを見ることができます:

% Initialise example cell array 
M = {'col1', 'A2A', 'B2', 'CC3', 'D5' 
    'asd189', 123, 33, 71119, 18291 
    'as33d', 1311, 31, NaN, 1011 
    'asd189', NaN, 44, 79, 191}; 
% Open a file for writing to (doesn't have to already exist, can specify full directory) 
fID = fopen('test.csv','w'); 
% Write header line, formatted as strings with comma delimiter. Note \r\n for new line 
fprintf(fID, [repmat('%s, ', 1, size(M,2)-1),'%s\r\n'], M{1,:}); 
% Loop through other rows 
for row = 2:size(M,1) 
    % Write each line of cell array, with first column formatted as string 
    % and other columns formatted as floats 
    fprintf(fID, ['%s, ', repmat('%f, ', 1, size(M,2)-2),'%f\r\n'], M{row,:}); 
end 
% Close file after writing 
fclose(fID); 

結果:

csv

0

使用writetablecsvwrite、またはxlswrite、またはfprintfなどの低レベルのコマンドを使用するよりも、CSV(またはExcelファイル、またはその他のテキスト区切りのファイル形式)に書き込むほうがずっと簡単です。あなたのデータは、現在、(多分それは配列またはセル配列にあります)テーブルとして記憶されていない場合

>> t = table({'asd189';'as33d';'asd189'},[123;1311;NaN],[33;31;44],[71119;NaN;79],[18291;1011;191]); 
>> t.Properties.VariableNames = {'col1','A2A','B2','CC3','D5'} 
t = 
     col1  A2A  B2  CC3  D5 
    ________ ____ __ _____ _____ 
    'asd189'  123 33 71119 18291 
    'as33d'  1311 31  NaN  1011 
    'asd189'  NaN 44  79  191 
>> writetable(t,'myfile.csv') 

、そのようなarray2tablecell2tableとしてユーティリティ機能を使用して、テーブルに変換するために非常に簡単です。あなたはこれを行うためにわずかな時間のペナルティを支払うだけです。

PS - Excelファイルに書き込むためにExcelをインストールする必要はありません。後でそれらを読み取ることができないかもしれませんが、MATLABはそれをまだ書き込むことができます。とにかく.csvを好むように聞こえます。

関連する問題