Der beste Weg, drucken diese auf Ihrem Setup zu tun, hängt davon ab. Wenn Sie nur eine Matrix-/Vektoroperation ohne viele Schleifen ausführen möchten, beachten Sie, dass dies fast wie ein inneres Produkt zwischen s
und u
aussieht, mit der Ausnahme, dass einige Begriffe in den Unterschied umgewandelt wurden. Wenn ich Ihre Gleichungen verstehe, sieht es so aus:
N = 12;
s_all = 1:N;
u_all = 7:N+6
for M = 1:N
s = s_all(1:M);
u = u_all(1:M);
ds = s - [s(2:end) 0];
result = u*ds(end:-1:1)'
end
Hinweis meine Daten sind ein Zeilenvektor.
dies funktioniert gut, wenn N
wächst nicht zu groß, wenn Sie die endgültige Größe von N
am Anfang nicht wissen, oder wenn die Werte von s
und u
alle bei jeder Iteration ändern.
In Abhängigkeit von den Größen Ihrer Daten, wenn u
und s
die gleichen Stand der Werte bei jeder Iteration haben könnten Sie bessere Ergebnisse sehen von u
und s
über die for-Schleife preallocating und dann in neue Werte einer nach dem anderen zu bringen, anstatt Kopieren über neue s
und u
und Neuberechnung der gesamten ds
Wert.
So:
s = nan(1,N);
u = nan(1,N);
ds = nan(1,N);
for M = 1:N
s(M) = s_all(M);
u(M) = u_all(M);
if(M>1)
ds(M-1) = s(M-1) - s(M);
end
ds(M) = s(M);
result = u(1:M)*ds(M:-1:1)'
end
Sie überschreiben 'result' bei jeder Iteration in der Schleife ...? – Dan
Ja, wenn Sie es behalten wollten, könnten Sie 'result (M) = blablabla' schreiben – Steve
, wenn Sie es nicht behalten möchten, dann warum haben Sie die Schleife? Oder, warum ist diese Linie in der Schleife? – Dan