Mam vector struktur Punkt
struct punkt
{
std::vector<double> wspolrzedne;
int nrKlastra{};
};
każdemu punkt w przestrzeni d-wymiarowej jest przypisany do jednego klastra/ jednej grupy. Chodzi o to, aby wśród każdego klastra wyliczyć centroid dodając do siebie poszczególne współrzędne, a następnie dzieląc przez liczbę punktów.
Przykład dla dwóch punktów 3- wymiarowych:
A = [2, 3, 5] B= [6, 3, 7] ====> centroid dla nich to bedzie C[ 4, 3, 6 ]
Za każdym razem jednak wyrzuca mi błąd i nie za bardzo wiem jak to zrobić ani co robię źle, bo program przed kompilacją żadnych błędów nie pokazuje. Tutaj jest kod funkcji
std::vector<punkt> newCentroidy(std::vector<punkt> vectorCentroidow, std::vector<punkt> vectorPunktow, daneWejsciowe przelaczniki)
{
std::vector<punkt> vectorCentr;
std::vector<int> lPuntow{};
std::vector<std::vector<double>> suma{};
for (int i = 0; i < przelaczniki.k; i++)
{
for (int j = 0; j < vectorPunktow.size(); j++)
{
for (int k = 0; k < przelaczniki.d; k++)
{
if (vectorPunktow[j].nrKlastra == i) //jezeli nrKlastra j-tego punktu to i
{
lPuntow[i] += 1;
suma[i][k] += vectorPunktow[j].wspolrzedne[k];
}
}
}
}
return vectorCentr;
}
przelaczniki, to strutura ktora przechowuje m.in informacje o tym ilo wymiarowe sa punkty (przelaczniki.d).
Kod nie jest dokończony, bo już na tym etapie są jakieś błędy