2016-11-09 4 views
0

Ich habe einen Vektor a=[1,2,3,4,5,6,7] und einen Anfangswert a(0)=0 für die folgende Gleichung:Wie definiert man "Initialwert" für eine Berechnung in MATLAB?

for k=1:n 
    delta=a(k)-a(k-1); 
end 

I cant a(0)=0 definieren. Irgendwelche Ideen, wie man delta=a1-a0 berechnet?

+0

Wenn Sie wirklich Interesse an dieser speziellen Berechnung ist, es kann gut sein zu wissen, dass eine elegante Lösung würde be: 'diff (0: 7)' –

Antwort

1

MATLAB Indizierung beginnt bei 1 und nicht 0, so was du hast funktioniert, wenn Sie einfach tun:

a=[0,1,2,3,4,5,6,7]; 

for k=2:n 
    delta(k-1)=a(k)-a(k-1); 
end 

oder wenn Sie nicht wollen, um den Vektor zu ändern:

a=[1,2,3,4,5,6,7]; 

for k=1:n 
    if k>1 
    delta(k-1)=a(k)-a(k-1); 
    else 
    delta(1)=a(k); 
end 

oder noch besser, ohne die if

a=[1,2,3,4,5,6,7]; 
delta(1)=a(1); 
for k=2:n 
    delta(k-1)=a(k)-a(k-1);  
end 
+0

gibt es eine Möglichkeit, die Null in den Vektor a nicht zu setzen? – jdoubleu

+0

@jdoubleu Tatsächlich ist die Null innerhalb des Vektors in dieser Antwort. Es ist nicht möglich, einen Null-Index-Vektor zu haben (auf den Sie zu hoffen schienen). –

+0

@jdoubleu Sie könnten ein 'if' setzen, das prüft, ob k größer als 0 ist, und wenn es nicht den Wert 0 verwendet, habe ich die Antwort bearbeitet, um das zu tun. –

0

Es gibt ein paar Möglichkeiten, dies zu erreichen. Die simplist IMO ist eine zu verwenden, wenn Aussage zu überprüfen, ob k == 1, dann ist die inital Bedingung gilt:

delta = 0 
for k = 1:n 
    if k == 1 
     delta=a(k)-0; 
    else 
     delta=a(k)-a(k-1); 
    end 
end 
+0

Ich habe darüber nachgedacht, aber das Problem ist, dass die Berechnung noch nicht abgeschlossen ist. Also hätte ich zwei große Berechnungen, eine für k == 1 und eine für k> 1 – jdoubleu

Verwandte Themen