Ich bin derzeit Cross-Compiling auf dem BeagleBone Black in einer Visual Studio-Umgebung mit Armadillo, um MATLAB-Code in C++ zu übersetzen.Armadillo lesen MAT Datei Fehler
Dies ist ein Signalverarbeitungsprojekt, also brauche ich eine Möglichkeit, binäre Datendateien, insbesondere .mat-Dateien, zu lesen und zu schreiben. Zum Glück, die Gürteltier-Dokumentation sagt, dass Sie .mat-Dateien direkt in eine Matrix mit laden können.
Ich habe versucht, dass zunächst, aber es scheint wie es nicht die Datei richtig liest, noch liest es alle Einträge . Meine Referenzdatei ist eine 2000x6-Matrix und die erstellte Armadillo-Matrix ist 5298x1. Ich weiß, dass es ohne einen Gürteltier nachahmenden Header in einen Spaltenvektor umgewandelt wird, und ich muss es mit .reshape() umformen, aber es erhält einfach nicht alle Einträge und durch Inspektion die Einträge, die es gemacht hat Lesen ist falsch.
Ich bin mir nicht sicher, was das Problem ist. Ich habe die Datenreferenzmat-Dateien in den Debug-Ordner für das Remote-Projekt auf der BBB platziert, wo die .out kompilierte Datei erstellt wird. Gibt es einen anderen Weg, den ich integrieren sollte?
Auch, helfen mit dem Armadillo-Header oder andere Vorschläge nachzuahmen sind willkommen. Wenn Sie etwas brauchen, lassen Sie es mich wissen. Hier
ist das Prüfprogramm Ich verwende:
#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;
}
Das erste Element in der .mat Datei ist 0,0, und das letzte Element ist 0,0014. Hier ist der Ausgang.
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).
Dank
Sie sollten [MCVE] mit dem Code angeben, der zum Laden der Matrix, der Eingabematrix, Ihrer Ausgabe und der erwarteten Ausgabe verwendet wird – Rama