問題タブ [mat-file]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
matlab - オブジェクトを含む多数の小さな .mat ファイルの効率的なディスク アクセス
私は、サイズが 2k から 100k の範囲の約 9000 個のオブジェクト、合計で約 0.5 ギガの小さな .mat ファイルを多数格納する最善の方法を決定しようとしています。
典型的な使用例は、一度に少数 (たとえば 10 個) のファイルをディスクから取得するだけでよい場合です。
私が試したこと:
方法 1: 各ファイルを個別に保存すると、パフォーマンスの問題が発生します (保存時間が非常に遅くなり、その後しばらくの間システムが遅くなります)。Windows 7 では処理が困難なため、フォルダー内のファイルが処理されない可能性があります (そして、私の SSD は苦労していると思います)。それも)。ただし、最終結果は問題ありません。必要なものを非常に迅速にロードできます。これは「-v6」保存を使用しています。
方法 2: すべてのファイルを 1 つの .mat ファイルに保存してから、必要な変数だけを読み込むと、アクセスが非常に遅くなります (読み込みには、ファイル全体を読み込むのにかかる時間の約 4 分の 3 の時間がかかります。保存の順序)。これも「-v6」保存を使用しています。
ファイルを多くのフォルダーに分割できることはわかっていますが、それは非常に厄介なハックのように思えます (そして、SSD が多くの小さなファイルを書き込むのを嫌うのは修正されません)。より良い方法はありますか?
編集: オブジェクトは、主に double データの数値行列とそれに付随する uint32 識別子のベクトル、および多数の小さな識別プロパティ (char および数値) で構成されます。
python - Python から Mat ファイルへ: 文字列のリストを通常の文字行列 (セル配列ではありません!) にエクスポートします。
Python のこのコードは、.mat-file にセル "STRINGS" を作成します。
matlab では、セル文字列を取得します。
通常の行列を取得するにはどうすればよいですか? 例えば:
編集
次のコードを実行すると、誤解された配列マングリングが発生します。
パイソン:
マトラブ:
python - matlab から python: matlab セル配列の値を取得する
私はmatlabとpythonに非常に慣れていないため、matlabセル配列からpythonでいくつかの値を使用する必要があります。
このコード行を実行して結果を出力すると、次のようになる整数のセル配列があります。
そしてプリントアウトは続きます。
誰かがセル配列がどのように配置されているか説明してもらえますか? (上の次元は何次元ですか?)
次に、いくつかの質問があります: 1) このセル配列内には、1 つの配列/セルに割り当てられた変数「ラベル」と「座標」があります (使用する実際の用語はわかりません) - 太字の値. この値にアクセスするために Python で書きたいと思います。どうすればいいですか?
2)テストするために、これを試しました->juncInfoF = a.get('juncForward_c')
そして、juncInfoFを印刷しようとすると、「なし」と印刷されます。どうしてこんなことに?以前にこれを試したときにうまくいくので、私は困惑しています。私もこれを行うことができました-> print juncInfo[0][9][0][0]
. しかし今、私は上記のことさえできません。
r - R: 特定の .mat ファイルを R に読み込むのに役立ちます
そのため、この特定の .mat ファイルを R に読み込もうとしました。matlab についてはあまり知りませんが、R.matlab パッケージが圧縮されていないデータのみを R に読み込み、それを圧縮されていないものとして保存できることは十分に知っています。を使用してmatlabにそのまま保存する必要があります
save new.mat -v6
。
そうしましたがreadMat("new.mat")
、R で使用すると、ロードが永遠にスタックしてしまいました。また、次の方法でパッケージ hdf5 を使用してみました。
この問題が何であるかはわかりませんが、誰かがこれを理解しようとする場合、ファイルはhttp://dibernardo.tigem.it/MANTRA/MANTRA_online/Matlab_Code%26Data.html にあり、inventory と呼ばれます。 mat (最初のファイル)。
ご協力いただきありがとうございます!
database - データベースからではなく、mat ファイルからデータを読み取る利点
データベースに対してクエリを実行する代わりに、mat ファイルから大きなデータを読み取るコードを見てきました。データベースを使用するのとは対照的に、これを行う利点は何ですか? mat ファイルの内容をデータベースに、またはその逆に簡単に移動することは可能ですか?
matlab - .matファイルが存在し、破損していないことを確認します-Matlab
私には2人の独立したMatlabワーカーがいて、最初にデータを取得/保存し、2番目にデータを読み取ります(そしていくつかの計算などを行います)。
FIRSTはデータを.matファイルとしてハードディスクに保存し、SECONDはそこからデータを読み取ります。SAVE
.matおよび8millisecとして、このデータに約20秒かかりますDELETE
。データを保存する前に、まず古いファイルを削除してから、新しいバージョンを保存します。
SECONDはどのようにしてデータが存在することを確認できis not corrupt
ますか?使用できますexists
が、データが破損しているかどうかはわかりません。たとえば、FIRSTがデータを保存しているときにSECONDがデータを正確に読み取ろうとすると、exists
合格しLOAD
ますが、「データが破損している」などのエラーが表示されます。
ありがとう。
matlab - MATLAB で大きなファイル (~150MB) を読み込むにはどうすればよいですか?
行列形式 (つまり 4070x4070) の大きな MATLAB ファイル (150MB) があります。このファイルを MATLAB で処理する必要がありますが、このファイルを読み込めないようです。「メモリ不足」エラーが発生しています。このサイズのファイルをロードできる他の方法はありますか? 私は 32 ビット プロセッサを使用しており、2 GB の RAM を搭載しています。助けてください。この問題に対処するのに疲れ果てています。
python - savematを使用してPythondictを保存およびロードすると、エラーが発生します
これが私が得るエラーの最小限の例です。ドキュメントを正しく理解していれば、これは機能しているはずですが、そうではなかったようです。
python - Pythonで三次元行列構造を作成してmatファイルに書き込む
私はPythonが初めてです。8 x 8 の行列をある程度の長さで保存するには、3 次元の行列が必要です。530 に電話しましょう。問題は、numpy が主張するように、行列が 2 次元を超えることができないため、np.array を使用したことです。
R = zeros([8,8,530],float)
8 x 8 の行列を np.matrix として計算し、
R[:,:,ii] = smallR
scipy が主張しているように、それを mat ファイルに保存しようとしました。
sio.savemat('R.mat',R)
ただし、「numpy.ndarray」オブジェクトに属性「items」がないというエラーが表示されます
/usr/local/lib/python2.7/dist-packages/scipy/io/matlab/mio.py:266: FutureWarning: Using oned_as default value ('column') This will change to 'row' in future versions
oned_as=oned_as)
Traceback (most recent call last):
File "ClassName.py", line 83, in <module>
print (buildR()[1])
File "ClassName.py", line 81, in buildR
sio.savemat('R.mat',R)
File "/usr/local/lib/python2.7/dist-packages/scipy/io/matlab/mio.py", line 269, in savemat
MW.put_variables(mdict)
File "/usr/local/lib/python2.7/dist-packages/scipy/io/matlab/mio5.py", line 827, in put_variables
for name, var in mdict.items():
AttributeError: 'numpy.ndarray' object has no attribute 'items'
matlab - MATLAB で .mat ファイルにアクセスする (Load 関数を使用しない)
ハードディスクに保存されたMatlabに(行列の)構造体があります。現在load
、これらのファイルを関数内にロードするために使用しています。はるかに高速な別の方法でこれを行う提案はありますか?
(はい、構造体を変数として関数に渡すことはできますが、メモリの問題により不可能です!)。ありがとう!これは大きな助けになるでしょう!