データを特定の形式でテキスト ファイルに保存するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/926741

質問

行列をテキスト ファイルに保存して、別のプログラムで読み取れるようにしたいと考えています。今私が使っているのは:

save('output.txt', 'A','-ascii');

しかし、これによりファイルが次のように保存されます

6.7206983e+000  2.5896414e-001
6.5710723e+000  4.9800797e-00
6.3466334e+000  6.9721116e-001
5.9975062e+000  1.3346614e+000
6.0224439e+000  1.8127490e+000
6.3466334e+000  2.0517928e+000
6.3965087e+000  1.9721116e+000

しかし、すべての桁ではなく、「電子表記」なしで保存したいと考えています。これを行う簡単な方法はありますか?

編集:ありがとう!それはうまくいきます。申し訳ありませんが、ロールバックを使用したことで編集が台無しになってしまったようです。

役に立ちましたか?

解決

私なら使用します fprintf この関数を使用すると、データを出力する形式を自分で定義できます。例えば:

fid = fopen('output.txt', 'wt');
fprintf(fid,'%0.6f %0.6f\n', A.');
fclose(fid);

これにより、小数点以下 6 桁の精度で行列 A が出力されます。関数も使用する必要があることに注意してください fopen そして fclose.

他のヒント

同上gnoviceのソリューションは、パフォーマンス&カスタム書式が必要な場合。

dlmwrite の(グローバルあなたにいくつかのコントロールを提供しますフォーマットのではなく、フィールドごと)。しかし、それは低い性能に悩まされています。私は数年前にテストを実行し、dlmwriteは、fopenの/ fprintfの/ fcloseのソリューションよりも遅く5-10xのようなものでした。 (編集:私は15x10000行列のように、大きな行列を参照しています)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top