現在、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).
おかげ
アルマジロ
[MCVE]には、行列、入力行列、出力、および期待される出力をロードするコードを提供する必要があります – Rama