Hey ho,
bin gerade dabei ein bisschen Mathe mit C# zu betreiben (und wehe jetzt sagt hier einer, dass das Schwachsinn wäre, das weiß ich selbst ^^). Aber zurück zum Eigentlichen:
Ich versuche ne Matrix-Vektormultiplikation durchzuführen. Interne Funktionen wie Matrix.Multiply gehen leider nicht, da Visual Studio den Matrix.Namespace nicht kennenlernen möchte.
Daher hab ich das ganze von Hand versucht, allerdibngs das Problem, dass ich nicht richtig mit den Dimensionen klar komme:
Das Problem liegt vermutlich bei dem A[0].Length, da die zweite Dimension genau so "groß" ist, wie die einzige von b, werden Elemente nicht mitberechnet.
Beispiel war eine 4x3 Matrix und ein 3x1 Vektor, sollte einen 4x1 Vektor ergeben, die ersten Komponenten stimmen (lt. Matlab), allerdings fehlt der vierte Eintrag komplett.
Kann man irgendwie gleich die Größe von der "Matrix" (also des double[][]-Arrays A) abfragen (hier dann [4,3]) oder wie greift man gezielt auf die jeweilige Dimension zu?
À la A(:,1) wie in Matlab?
MfG
bin gerade dabei ein bisschen Mathe mit C# zu betreiben (und wehe jetzt sagt hier einer, dass das Schwachsinn wäre, das weiß ich selbst ^^). Aber zurück zum Eigentlichen:
Ich versuche ne Matrix-Vektormultiplikation durchzuführen. Interne Funktionen wie Matrix.Multiply gehen leider nicht, da Visual Studio den Matrix.Namespace nicht kennenlernen möchte.
Daher hab ich das ganze von Hand versucht, allerdibngs das Problem, dass ich nicht richtig mit den Dimensionen klar komme:
Code:
public static double[] MatrixVectorMultiply(double[][] A, double[] b)
{
var d = new double[b.Length];
for (var i = 0; i < A[0].Length; i++)
{
for (var j = 0; j < b.Length ; j++)
{
d[i] += A[i][j]*b[j];
}
}
return d;
}
Das Problem liegt vermutlich bei dem A[0].Length, da die zweite Dimension genau so "groß" ist, wie die einzige von b, werden Elemente nicht mitberechnet.
Beispiel war eine 4x3 Matrix und ein 3x1 Vektor, sollte einen 4x1 Vektor ergeben, die ersten Komponenten stimmen (lt. Matlab), allerdings fehlt der vierte Eintrag komplett.
Kann man irgendwie gleich die Größe von der "Matrix" (also des double[][]-Arrays A) abfragen (hier dann [4,3]) oder wie greift man gezielt auf die jeweilige Dimension zu?
À la A(:,1) wie in Matlab?
MfG