0

非常に大きなバイナリ配列をテキスト ファイルに書き込もうとしています。私のデータの次元は次の1 X 35,000ようなものです:

0 0 0 1 0 0 0 .... 0 0 0 1

私がやりたいことは、最初にこの配列の先頭に文字列を追加して、ROW1 と言ってから、この配列をスペース区切り文字でテキスト ファイルにエクスポートすることです。

私がこれまでに試したこと:

fww1 = strcat({'ROW_'},int2str(1));
fww2 = strtrim(cellstr(num2str((full(array(1,:)))'))');

new = [fww1 fww2];

dlmwrite('text1.txt', new,'delimiter',' ','-append', 'newline', 'pc'); 

このコードの結果として、次のようになりました。

R O W _ 1 0 0 0 0 1 ....

以下のように取得するにはどうすればよいですか。

ROW_1 0 0 0 0 1 ....
4

1 に答える 1

1

テキスト ファイルに書き込む最も柔軟な方法は、fprintf. 少し学習曲線があります (フォーマット指定子、つまり%dなどを理解する必要があります) が、それは間違いなく価値があり、他の多くのプログラミング言語には何らかの実装がありfprintfます。

あなたの問題のために、次のことをしましょう。まず、書き込み用にファイルを開きます。

fid = fopen('text1.txt', 'wt');

これ'wt'は、ファイルをテキスト モードで書き込み用に開くことを意味します。次に、必要なこの文字列を書きましょう。

row_no = 1;
fprintf(fid, 'ROW_%d', row_no);

は、指定された数値の 10 進数表現に置き換えるように%d指示する特殊文字です。fprintfこの場合、それはよく似た動作をします(非整数でも機能するため、int2strおそらくより適切な類推です)。num2str

次に、データの行を書き込みます。ここでも、 を使用%dして、ブール配列の 10 進数表現が必要であることを指定します。

fprintf(fid, ' %d', array(row_no,:));

注意すべき点がいくつかあります。まず、フォーマット指定子には、すべての数値の前にスペースが含まれているため、区切り記号が処理されます。第 2 に、1 つの形式のみを指定しましたが、数値の配列を指定しました。これに直面するとfprintf、数字がなくなるまでフォーマットを繰り返します。

次に、行の終わりを示すために改行を書きます (\nは によって認識される特殊文字の 1 つですfprintf)。

fprintf(fid, '\n');

記述する行がさらにある場合は、これらのfprintfステートメントに for ループを配置できます。最後に、ファイルへの書き込みが完了したことをオペレーティング システムが認識できるように、ファイルを閉じます。

fclose(fid);
于 2016-02-02T23:52:41.000 に答える