2012-05-12 11 views
0

Matlabのテキストファイルで文字列を区切りたいのですが、これまでは "csvwrite"と "dlmwrite"を使用していました。Matlabで文字列をカンマで区切る

0.3 
0.1 
0.5 
etc 

へ:

は、次のようになりますテキストファイルを回し:

myFile - input ('Please enter file's directory','s'); 
readMatrix - csvread(myFile); 
csvwrite('newdatafile.dat', readMatrix); 

は、私は何をしようとしていますが、これは、明確にする:

は、彼らは一般的にこの形を取りますこれは:

0.3, 
0.1, 
0.5, 
etc, 
+0

1サンプル入力と出力を掲示するため。しかし、もっと重要なのは、正確には機能していないことを少しは含めるべきです。この場合も、ファイルの入力方法と格納方法についてさらに詳しく説明できます。 – Ansari

+0

元のファイルを読み込んだ後、readMatrixにはどのような形式がありますか?それは行列ですか(もしそうなら、どんなサイズですか?)、またはセル配列ですか? – tmpearce

答えて

0

なぜ行の最後にカンマが必要ですか?行は、カンマ区切りの数字が含まれているのファイルでも csvread作品、すなわち:

file1.dat: 
02, 04, 06, 08, 10, 12 
03, 06, 09, 12, 15, 18 
05, 10, 15, 20, 25, 30 
07, 14, 21, 28, 35, 42 
11, 22, 33, 44, 55, 66 


--and then in matlab: 
readMatrix = csvread('file1.dat') 

ファイルを読み込み、(各行の終わりに不足しているにもかかわらず、コンマ)size(readMatrix) = [5 6]になります 同じことが当てはまりますファイルに数字の1つの列しか含まれていない(したがってカンマがない)場合。

あなたはしかし、本当にカンマが必要な場合は、データの読み取りとfprintfでファイルにそれを自分で印刷することができます。

readMatrix = csvread('file1.dat'); 
fid=fopen('file1withcommas.dat','w'); 
for ii=1:size(readMatrix,1) 
    fprintf(fid,'%g,\n',readMatrix(ii,:)); 
end 
fclose(fid) 
+0

代わりの方法が働いた、ありがとう! –

0

MATLABのcsvwrite関数は、行列データをコンマで区切ったファイルに書き込みます。残念なことにMATLABの文字列は、独自のデータ型を持たず、行列としても表されるため、csvwriteを実行すると各文字が要素として扱われ、各文字の間にコンマが入ります。

2つのオプションがあります:入力を倍精度として格納し、その上でcsvwriteを実行するか、より多くのプリミティブ関数を使用してファイルに出力します(sprintfの後にfprintfをファイルハンドルとして出力)。

関連する問題