0

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

一般に、次の形式を取ります。

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

明確にするために、私がやろうとしていることはこれです:

次のようなテキスト ファイルを有効にします。

0.3
0.1
0.5
etc

これに:

0.3,
0.1,
0.5,
etc,
4

2 に答える 2

0

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

2 つのオプションがあります。入力を double として保存し、それに対して csvwrite を実行するか、より基本的な関数を使用してそれらをファイルに出力します (sprintf に続いて fprintf をファイル ハンドルに出力します)。

于 2012-05-12T17:46:20.533 に答える
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)
于 2012-05-12T17:47:39.357 に答える