我是一位物理學家,在課程編程方面沒有多少經驗。如果有人能爲此提供幫助,我將不勝感激。我已經成功地在python類中使用了numpy數組,但是在這裏丟失了。在課堂上使用犰狳矩陣
動機很簡單。我需要使用一個具有幾個矩陣的類作爲私有成員並對它們執行一些操作。看看下面的內容。
#include<iostream>
#include<armadillo>
using namespace std;
class myclass{
// a matrix
double A[2][2];
public:
int set_element(double);
};
int main(){
myclass x;
x.set_element(2.0);
}
int myclass::set_element(double num){
// a function to assign a value to the first array element.
A[0][0] = num;
cout << A[0][0] << endl;
return 0;
}
這編譯並正確運行。但是,如果我嘗試使用犰狳矩陣,事情不起作用。
#include<iostream>
#include<armadillo>
using namespace std;
using namespace arma;
class myclass{
private:
// a matrix
mat A(2,2);
public:
int set_element(double);
};
int main(){
myclass x;
x.set_element(2.0);
}
int myclass::set_element(double num){
//function to set the first element.
A(0,0) = num;
cout << A(0,0) << endl;
return 0;
}
當我嘗試編譯,我得到了一堆或錯誤。
[email protected]:~/comp/cpp$ g++ dummy.cpp -larmadillo
dummy.cpp:10:15: error: expected identifier before numeric constant
dummy.cpp:10:15: error: expected ‘,’ or ‘...’ before numeric constant
dummy.cpp: In member function ‘int myclass::set_element(double)’:
dummy.cpp:22:14: error: no matching function for call to ‘myclass::A(int, int)’
dummy.cpp:22:14: note: candidate is:
dummy.cpp:10:13: note: arma::mat myclass::A(int)
dummy.cpp:10:13: note: candidate expects 1 argument, 2 provided
dummy.cpp:23:22: error: no matching function for call to ‘myclass::A(int, int)’
dummy.cpp:23:22: note: candidate is:
dummy.cpp:10:13: note: arma::mat myclass::A(int)
dummy.cpp:10:13: note: candidate expects 1 argument, 2 provided
我相信我在這裏錯過了一些關鍵方面;有人請指出。
謝謝。
Armadillo矩陣類可以選擇使用編譯時的大小 - 它們被稱爲固定大小的矩陣。例如'mat :: fixed <2,2> A;'請參閱文檔中的[高級構造函數](http://arma.sourceforge.net/docs.html#adv_constructors_mat)部分。同樣,向量也可以有一個固定大小的選項:'vec :: fixed <10> v;' – mtall
好點,會編輯 –