Ich habe diese beiden Vektoren, mit 9 Elementen jeweils:Matlab: Warum dieses Stück Code funktioniert (erwartet ein Fehler)
>> length(a)
ans =
9
>> length(c)
ans =
9
diesen Code:
z=0;
s=0;
temp=0;
for K = 1:length(c)
temp=c(K)*a(K);
z=prod(1-a(K+1:end));
s=s+temp*z;
end
Der Vektor ist eine Indizierung erfolgt über K itterator. Ich würde erwarten, dass dieser Index blasen würde. Fehle ich hier etwas?
Warum erwarten Sie, dass es scheitert? Da "Länge (a)" und "Länge (c)" gleich sind, wird "K" nicht für "a" außer Kraft gesetzt. Vielleicht denken Sie über Iteratoren als Zeiger wie in C++, aber in MATLAB haben wir das nicht: 'K 'ist einfach eine Zahl, die von' 1: length (c)' ausgeht, und Sie indexieren die Matrizen 'a' und' c' mit dieser Nummer. –
@Steve Heim, Sie betrachten nur die 'temp = c (K) * a (K)' -Zeile, nicht die 'a (K + 1: end)' Indizierung. –