Premiär! Fyndchans i SweClockers Månadens Drop
Permalänk
Medlem

Vektorer och C++

Hej alla,

Jag försöker bygga en funktion som tar en matris x och en vektor y som input och beräknar vektorn x.y. Min fråga är mycket enkel, varför får jag fel svar med detta:

template<typename T> vector<T> matrixVector(vector<vector<T>> x, vector<T> y) { if(x[0].size() != y.size()) { throw("Unequal length"); } vector<T> outPut(x.size()); for(int j=0; j < x.size(); j++) { for(int i=0; i < y.size(); i++) { outPut[j] = (x[j][i])*y[i]; } } return outPut; }

outPut är en vektor men har fel värden. Jag använder template så att jag slipper specificera datatyp för matriselementen och vektorkomponenterna (inget förändrar om jag tar int eller double etc).

Visa signatur

PS4 & Macbook Pro.

Utlandssvensk sedan många år. Citera för svar.

Permalänk
Medlem

Du skriver över outPut[j] i varje iteration av den innersta loopen, så outPut[j] kommer att vara lika med (x[x.size()-1][y.size()-1]*y[y.size()-1]. Vad du nog vill göra är att istället lägga till produkten till det gamla värdet i outPut[j].

Permalänk
Medlem
Skrivet av perost:

Du skriver över outPut[j] i varje iteration av den innersta loopen, så outPut[j] kommer att vara lika med (x[x.size()-1][y.size()-1]*y[y.size()-1]. Vad du nog vill göra är att istället lägga till produkten till det gamla värdet i outPut[j].

Vilken klant jag är! Att jag inte såg det själv. Nybörjarmiss.

Stort tack för hjälpen!

Visa signatur

PS4 & Macbook Pro.

Utlandssvensk sedan många år. Citera för svar.