2017-07-03 37 views
1

現在、Armadilloを使用してVisual Studio環境でBeagleBone Blackをクロスコンパイルしていて、MATLABコードをC++に変換しています。ArmadilloのMATファイル読み込みエラー

これは信号処理プロジェクトなので、バイナリデータファイル、特に.matファイルを読み書きする方法が必要です。ありがたいことに、.load()を使用して.matファイルを直接ロードすることができることがあります。

私は最初に試みましたが、ファイルを正しく読み取っていないか、またはすべてのエントリ。私の参照ファイルは2000x6の行列で、作成されたアルマジロ行列は5298x1です。アルマジロを模倣したヘッダーがなければ、それは列ベクトルに変換され、.reshape()を使って変形する必要がありますが、単にすべてのエントリを受け取っていないだけでなく、検査によって、読んで間違っている。

問題の内容がわかりません。私は、リモートプロジェクトのBBB上のデバッグフォルダにデータ参照.matファイルを置いています。そこで、.outコンパイルされたファイルが作成されます。私はそれを統合すべき別の方法がありますか?

また、アルマジロヘッダーを模倣したり、他の提案を歓迎します。 何か必要な場合は、私にお知らせください。

#include <iostream> 
#include <armadillo> 

using namespace std; 
using namespace arma; 

int main() 
{ 
mat data_ref; 

data_ref.load("Epoxy_6A_Healthy_Output_200kHz_Act1_001.mat"); 

cout << "For Data_ref, there are " << data_ref.n_cols << " columns and " << data_ref.n_rows << " rows.\n"; 
cout << "First item: " << data_ref(0) << "\n6th item: " << data_ref(6) << "\n2000th item: " << data_ref(2000); 

data_ref.reshape(2000, 6); 

cout << "For Data_ref, there are " << data_ref.n_cols << " columns and " << data_ref.n_rows << " rows.\n"; 
cout << "First item: " << data_ref(0,0) << "\nLast Item: " << data_ref(1999,5); 

cout << "\nDone"; 

return 0; 
} 

.MATファイル内の最初の要素は0.0で、かつ最後の要素は0.0014である:ここでは

は、私が使用していたテストプログラムです。 ここに出力があります。

For Data_ref, there are 1 columns and 5298 rows. 
First item: 8.48749e-53 
th item: 9.80727e+256 
th item: -2.4474e+238For Data_ref, there are 6 columns and 2000 rows. 
First item: 8.48749e-53 
(gdb) 1028-var-list-children --simple-values "var4.public" 0 1000 
(gdb) 1030-var-list-children --simple-values "var4.arma::Base<double, 
arma::Mat<double> >" 0 1000 
Last Item: 0 
Done=thread-exited,id="1",group-id="i1" 
The program '' has exited with code 0 (0x0). 

おかげ

アルマジロ
+0

[MCVE]には、行列、入力行列、出力、および期待される出力をロードするコードを提供する必要があります – Rama

答えて

1

は、MATLABの.MAT形式をサポートしていません。マニュアルではArmadillo matバイナリ形式を参照しています。ただし、hdf5バイナリ形式を使用してMatlabにデータを保存し、それをArmadilloにインポートすることはできますが、hdf5 libをダウンロードしてArmadilloを再設定する必要があります。ドキュメントのhdf5_binaryセクションを参照してください。

関連する問題