我計算矩陣的行列式,計算和因此的方法根據數據的維數稱爲例如:C++迭代 - 推導維
template<int X, int Y>
float determinant(X, Y, std::vector<Vector> &data)
{
// Determine the dimensionality of matrix data (x and y)
}
,我遇到的問題是在計算PCA,調用該函數的類,只接受一個迭代器:
class PCA {
public:
template<typename T>
PCA(T begin, T end)
{
// Determine the X and Y here
float det = determinant(X, Y, ....);
}
};
現在我想知道它是否可以推斷出已通過迭代器X
和Y
通過量h PCA,而不是傳入兩個整數值。
任何意見,將不勝感激
編輯:
道歉,我的問題是不明確的。
基本上,typedef std::vector<double> Vector;
被使用,因此std::vector<Vector> data;
因此將是一個向量的向量。
我這個採樣執行下列操作:
std::vector<Vector> data1 = { {1, 2}, {3, 4}, {5, 6}, {8, 9} }; // 2x2
而當我想補充以下內容:std::vector<Vector> data2 = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12} }; // 3x3
如此明顯,計算行列式時有此不同的計算。
欲推斷DATA1是從功能的2×2和3×3 DATA2而不必在特別通過這些值。
如果您需要任何幫助,您需要發佈該迭代器的代碼。 –
什麼是X和Y類型(爲什麼不只是int?)?誰定義了迭代器?如果你定義了迭代器,你可以在迭代器的定義中放入typedef,並做類似於行列式(T :: DIMType1,T :: DIMType2) – szli
@Marco你是指迭代器的代碼?對不起 – Phorce