004
15.11.2011, 11:40 Uhr
banshee
|
Ok nochmal ganz von vorne. Ich frage mich, ob das ganze überhaupt Sinn ergibt, denn ich kenne mich mit CLI eigentlich 0 aus und habe in Anbetracht diverser Deadlines momentan auch keine Zeit, ein paarhundert Seiten dickes Buch als Einführung zu lesen. Ziel ist es eigentlich nur folgenden Funktionen (von ihm gibts auch noch eine LDA-Implementierung, die sehr ähnlich ist) in einem cpp-Programm zu nutzen http://crsouza.blogspot.com/2009/09/principal-component-analysis-in-c.html Hat das also überhaupt Sinn, das ganze Projekt in CLI zu bauen oder gibt es da eine einfachere Variante? Falls nicht, wie muss dann dieser Code in CLI aussehen:
C++: |
// Creates the Principal Component Analysis of the given source PrincipalComponentAnalysis pca = new PrincipalComponentAnalysis(sourceMatrix, PrincipalComponentAnalysis.AnalysisMethod.Correlation);
// Compute the Principal Component Analysis pca.Compute();
// Creates a projection considering 80% of the information double[,] components = pca.Transform(sourceMatrix, 0.8f, true);
|
Ich hab jetzt studenlang rumprobiert und bekomme eine kryptische Fehlermeldung nach der anderen. Wenn double und System:ouble das gleiche sind warum ergibt dann:
C++: |
double foo[,] = new double[2, 3];
|
folgenden Syntaxfehler:
Code: |
1>main.cpp(84): error C3186: Ein mehrdimensionales systemeigenes Array ist nicht zulässig. 1>main.cpp(84): error C2440: 'Initialisierung': 'double *' kann nicht in 'double [2]' konvertiert werden
|
Dann bekomme ich mit dem verwalteten array:
C++: |
cli::array<double, 2>^ test; test = gcnew cli::array<double, 2>(1, 3240);
for(int i = 0; i < descriptors.size(); i++) test[0, i] = (double)descriptors[i]; //std::vector<HogParams> param_vec(16); Accord::Statistics::Analysis::PrincipalComponentAnalysis pca = new Accord::Statistics::Analysis::PrincipalComponentAnalysis(test, Accord::Statistics::Analysis::PrincipalComponentAnalysis::AnalysisMethod::Correlation);
|
noch folgende Fehler:
Code: |
1>main.cpp(92): error C2750: "Accord::Statistics::Analysis::PrincipalComponentAnalysis": "new" kann für den Referenztyp nicht verwendet werden. Verwenden Sie stattdessen ''gcnew''. 1>main.cpp(92): error C2664: 'Accord::Statistics::Analysis::PrincipalComponentAnalysis::PrincipalComponentAnalysis(cli::array<Type,dimension> ^)': Konvertierung des Parameters 1 von 'Accord::Statistics::Analysis::PrincipalComponentAnalysis *' in 'cli::array<Type,dimension> ^' nicht möglich
|
Rufe ich das enum AnalysisMethod richtig auf? Es liegt im namespace Accord.Statistics.Analysis in der Klasse PrincipalComponentAnalysis |