0

matlabに整数値の10x1行列がありますが、これを*テキスト*ファイルに書き込むにはどうすればよいですか?私はループに入っており、それぞれが新しい行に500を超えるそのような行列を追加したいと考えています。

fileID = fopen('exp.txt','a');

[r,c] = size(newFinalTree);
for i=1:r
    j=1;
    val=newFinalTree(i,j);
    while val~=0
       temp=reprVectors(val,:); %%%write this matrix to the file
       fprintf(fileID,temp); %%%this line produces error saying invalid format
       j=j+1;
       val=newFinalTree(i,j);
    end    
end
fclose(fileID);

また、ACコードからテキストファイルを簡単に読み取ることができるように、このようなマトリックスを作成するための最良の方法は何ですか?

4

3 に答える 3

2

500x10これを行う最良の方法は、行列を行列に連結してからを使用することだと思いますdlmwrite

input=randi(100,500,10);

dlmwrite(outputFilename,input)

これは、自分で作成するよりもエラーが発生しにくく、高速です。

形式が合わない場合dlmwriteは、区切り文字を変更することができます。

dlmwriteと比較した場合のもう1つの利点は、入力データの正しいフォーマットを自動的に選択することですfprintfdlmwrite

于 2012-08-24T08:01:18.513 に答える
0

reprVectors()があなたが話している10x1を出力している場合は、この小さな変更を試してください。

fprintf(fileID, "%d %d %d %d %d %d %d %d %d %d", temp);
于 2012-08-24T07:56:29.250 に答える
0

真の行列を保存したい場合mat2str(...)は、あなたの友達です。置き換えることができます:

fprintf(fileID,temp); %%%this line produces error saying invalid format

と:

fprintf(fileID,'%s\n',mat2str(temp))

または、テキストファイルの行をtemp =(行列)にしたい場合:

fprintf(fileID,'temp = %s\n',mat2str(temp));

fscanf(...)を使用して、Cでそれらを読み取るのは簡単です。また、行列の区切り文字は[]、行の区切り文字は;であり、列の区切り文字はスペースであることに注意してください。

于 2012-08-24T08:02:33.110 に答える