私は300バイトのアスキーファイルを9列のデータ(タブ区切りの文字列と数字)で持っています。matlabにASCIIファイルをロードし、それらを.matとして保存する
11204226 736539.402697000 192.168.0.104 10.0324 0 1.1313 3.543 3 9
ファイルがよく構造化され、空の行または不良行が存在しないはずである:例ラインは以下の通りです。形式はファイル全体で同じままです。
私はUbuntu 14.04でファイルを読み込み(importdata)しようとします。 LTS、6GBのRAM、Matlab 2015bシステムはただ止まります。私の同僚は、Windows 7、8GB RAM、Matlab 2014bにファイルを正常にロードしました。
しかし、計画は.matファイルにデータを保存することでしたが、これもできません。ファイルが作成されますが、サイズが1GBを超えて増加し、終了に至る兆候はありません。
Iは、グラフィカルインタフェースまたは以下のコードを介してデータをロードしようとした:.MATファイルを保存
tdata = importdata('data.dat');
は、同様のグラフィカルインタフェースを介して試みました。
私は、300MBのファイルがそのような挑戦をしてはならないと考えました。
ファイルへの対処方法はどちらの方法を選択しましたか?
私は、.matファイルがプレーンなasciiファイルよりも小さいと予想しました。
私の計画は、元のファイルを小さな断片に分割することを避けることでした。
更新:
データを読み込めた私の同僚は、構造内のすべての文字列エントリを数値に変換しました。これは最初の3つの列でした。 IPアドレスで構成される3番目の列は別として、どうしてそれらが文字列としてインポートされたのかわかりません。すべての数値行列を持つことで、データを保存することができ、結果として得られる.matファイルのサイズは15MBになります。どういうわけか、文字列と数字の混在がすべてを苦しめました。それでも理由は分かりません。
ファイルサイズは問題ではありません。以前は10GBを超えるファイルをロードしていましたが、RAMに収まらない場合でもMatlabはそれをキャッシュします。私が想定している問題はあなたのコードかもしれません - あなたの質問を編集してください。 – GameOfThrows
ほとんどの '自動'インポートルーチンは、第3列(IPアドレス、3つの '.'で区切られた4つの数字、 '数値'標準には対応していません)で苦労したり、異なるタイプのフィールド/カラムがある場合は、['textscan'](http://mathworks.com/help/matlab/ref/textscan.html)を使用してデータをインポートすることをお勧めします。 – Hoki