for/while < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 22:48 Mi 29.04.2009 | Autor: | Fatima |
Hallo Zusammen,
ich möchte bitte der Unterschied endlich verstehen, kann mir jemand dabei helfen, ich wäre sehr dankbar.
ich habe folgendes Problem
ich möchte nur die werte von g(i-1) wenn g(i)~=g(i-1) haben.BSP
also 0,1,2,3,4 und5
g =
0 0 1 1 2 2 3 3 4 5
ich habe so gemacht
j = 1;
for i : 1:length(g)-1
i = i+1;
if g(i)~= g(i-1)
g_neu(j) = g(i-1);
end
j =j+1:
end
und ich habe das bekommen!!!!!!!!!!!!!
g_neu =
0 0 0 1 0 2 0 3 4
und ich bekomme was anders mit while
i = 1;
while i < length(g)
i = i+1;
Hoffentlich kann mir jemand enlich das erklären
|
|
|
|
> Hallo zusammen,
>
> ich möchte bitte den Unterschied endlich verstehen, kann
> mir jemand dabei helfen, ich wäre sehr dankbar.
> ich habe folgendes Problem
> ich möchte nur die werte von g(i-1) wenn g(i)~=g(i-1)
> haben.
> BSP
> also 0,1,2,3,4 und 5
>
> g =
>
> 0 0 1 1 2 2 3 3 4 5
> ich habe es so gemacht:
>
> j = 1;
> for i : 1:length(g)-1
> i = i+1;
> if g(i)~= g(i-1)
> g_neu(j) = g(i-1);
> end
> j =j+1:
> end
>
> und ich habe das bekommen!!!!!!!!!!!!!
>
>
> g_neu =
>
> 0 0 0 1 0 2 0 3 4
>
> und ich bekomme was anders mit while
> i = 1;
> while i < length(g)
> i = i+1;
>
> Hoffentlich kann mir jemand endlich das erklären
Hallo Fatima,
ich verstehe zwar nicht ganz genau, um was es bei
deinem kleinen Programm geht, aber etwas fällt mir auf:
Innerhalb einer for-Schleife ist es bestimmt nicht
nötig (bzw. falsch !) eine Anweisung i=i+1 einzufügen,
denn die for-Schleife ist ja dazu da, den Index i bei
jedem Durchlauf um 1 zu erhöhen !
LG Al-Chw.
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 10:17 Do 30.04.2009 | Autor: | Frasier |
Hallo,
1: | g =[0 0 1 1 2 2 3 3 4 5]
| 2: | g_neu=[];
| 3: |
| 4: | for k = 2:numel(g)
| 5: | if g(k)~=g(k-1)
| 6: | g_neu=[g_neu g(k)];
| 7: | end
| 8: | end
| 9: | g_neu
| 10: |
| 11: |
| 12: | k=2;
| 13: | g_neu=[];
| 14: | while k<=numel(g)
| 15: | if g(k)~=g(k-1)
| 16: | g_neu=[g_neu g(k)];
| 17: | end
| 18: | k=k+1;
| 19: | end
| 20: | g_neu |
Vielleicht ist auch der Matlab-Befehl unique für dich nützlich.
Das i=i+1 in der for-Schleife ist zwar nicht schädlich, bringt aber rein gar nichts. Da das i die Laufvariable der Schleife ist überschreibt Matlab das bei jedem Durchlauf. Du könntest da auch schreiben i= 1937439, das bleibt ohne Wirkung.
Allerding ist es nicht gut, i oder j als Variablen zu nehmen, denn das sind in Matlab die Zeichen für die imaginäre Einheit. Wenn die beleg sind, kannst du u.U. nicht mehr komplex rechnen.
lg
F.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 12:14 Fr 01.05.2009 | Autor: | Fatima |
Hallo Frasier,
ich danke dir sehr für die Erklärungen, jetzt ist es besser geworden.
|
|
|
|