matlab statt for schleife Doppelpunkt

Gast #4127536
Lesenswert?

Wenn ich statt diese Zeile in Matlab zu schreiben, sie in C# schreibe:
Matlab:
1
erwMatrix(i,k:n_erw) = erwMatrix(i,k:n_erw) - factor*erwMatrix(k,k:n_erw);

erhalte ich dann das hier:

C#:
1
for (int j = k; j < n_erw; j++)
2
{
3
   //Change Items in List:
4
   double newValue = matrix.ElementAt(i).ElementAt(j) - faktor * matrix.ElementAt(j).ElementAt(j);
5
   matrix.ElementAt(i).RemoveAt(j);
6
   matrix.ElementAt(i).Insert(j, newValue);
7
}

Habe ich das richtig gemacht=
#4127567
Lesenswert?

Erik schrieb:
> Habe ich das richtig gemacht=

Es sieht so aus als ob es funktionieren könnte, nur wird das u.U. extrem 
langsam, da RemoveAt und Insert O(n)-Operationen und hier überflüssig 
sind:
1
Statt
2
matrix.ElementAt(i).RemoveAt(j);
3
matrix.ElementAt(i).Insert(j, newValue);
4

5
einfach direkt den neuen Wert setzen
6
matrix[i][j] = matrix[i][j] - faktor * matrix[j][j]
#4127571
Lesenswert?

Erik schrieb:
> Habe ich das richtig gemacht=

warum vergleichst du nicht die ausgaben?

und ich denke: nee

M(y,2:3)
heißt Zeile y, Spalte 2 bis 3

müsste also  j <= n_erw heißen

Was das remove und insert angeht: verstehe nicht, warum man das nicht 
einfach überschreiben kann.

Und was macht deine Matrixklasse bei remove und insert?
hört sich nicht nach einer sehr effizienten Matrix-Implementierung an.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren