Vinnaren i pepparkakshustävlingen!
2011-06-29, 13:06
  #1
Medlem
koopas avatar
Hej.
Hur gör man om man vill stoppa loopen vid ett speciellt värde för "x"?
Tar denna enkla loop som ex.
Den kommer att ge en vektor.
x = 9.91 , 9.82 , ... , -8.00
Hur gör jag för att den endast ska räkna för x > -2?
Har provat med while utan att lyckas.

Tack på förhand!
Citera
2011-06-29, 13:10
  #2
Medlem
kniggits avatar
Sätt

if x(i) == x_stop; return;

innan du avslutar for-loopen

Här finns lite syntax-tips(google): http://rigaux.org/language-study/syn...ge/Matlab.html
Citera
2011-06-29, 13:17
  #3
Medlem
matteyass avatar
Citat:
Ursprungligen postat av koopa
Hej.
Hur gör man om man vill stoppa loopen vid ett speciellt värde för "x"?
Tar denna enkla loop som ex.
Den kommer att ge en vektor.
x = 9.91 , 9.82 , ... , -8.00
Hur gör jag för att den endast ska räkna för x > -2?
Har provat med while utan att lyckas.

Tack på förhand!
While (x>-2) borde funka. Då måste du däremot ha en iterator (i=i+1 till exempel) inne i loopen. Annars kan du köra "if x<=-2, break, end". break hoppar ut ur loopen (till skillnad från return som hoppar ut ur hela funktionen).
Citera
2011-06-29, 13:41
  #4
Medlem
Madagascars avatar
Citat:
Ursprungligen postat av koopa
Hej.
Hur gör man om man vill stoppa loopen vid ett speciellt värde för "x"?
Tar denna enkla loop som ex.
Den kommer att ge en vektor.
x = 9.91 , 9.82 , ... , -8.00
Hur gör jag för att den endast ska räkna för x > -2?
Har provat med while utan att lyckas.

Tack på förhand!
Detta borde funka om jag har förstått din uppgift rätt:
t = 0.01*(1:200)+0.5;
x = 10-9*(t-0.5);
x = x(x>-2);
t = t(x>-2);

Vad det det du frågade efter?
__________________
Senast redigerad av Madagascar 2011-06-29 kl. 14:23.
Citera
2011-06-29, 14:17
  #5
Medlem
koopas avatar
Citat:
Ursprungligen postat av matteyas
While (x>-2) borde funka. Då måste du däremot ha en iterator (i=i+1 till exempel) inne i loopen. Annars kan du köra "if x<=-2, break, end". break hoppar ut ur loopen (till skillnad från return som hoppar ut ur hela funktionen).
Skulle du kunna visa hur du lägger in while med en iterator.
Varför bryter inte denna?

Citera
2011-06-29, 14:25
  #6
Medlem
koopas avatar
Citat:
Ursprungligen postat av Madagascar
Detta borde funka om jag har förstått din uppgift rätt:
t= 0.01*(1:200)+0.5;
x=10-9*(t-0.5);
x=x(x>-2);
t=t(x>-2);

Vad det det du frågade efter?
Ja.
Den ger rätt lösning, men då detta bara är en lite del ur en större lösning vill jag ha med villkår för att underlätta fortsättningen. Tack för hjälpen.
Citera
2011-06-29, 14:28
  #7
Medlem
Madagascars avatar
Citat:
Ursprungligen postat av koopa
Skulle du kunna visa hur du lägger in while med en iterator.
Varför bryter inte denna?

testa:
if x(i) < -2

Nu?
Citera
2011-06-29, 14:32
  #8
Medlem
koopas avatar
Citat:
Ursprungligen postat av Madagascar
testa:
if x(i) < -2

Nu?
Nu stoppar den rätt. Tack!
Citera
2011-06-29, 14:39
  #9
Medlem
matteyass avatar
Citat:
Ursprungligen postat av koopa
Skulle du kunna visa hur du lägger in while med en iterator.
Kod:
x1=10;
i=1;
t(i) = 0.01 * i + 0.5;
x(i) = x1 - 9 * (t(i) - 0.5);
while x(i)>-2
   t(i) = 0.01 * i + 0.5;
   x(i) = x1 - 9 * (t(i) - 0.5);
   i=i+1; <-- "iterator", heter säkert nåt finare på svenska
end
Notera att x(i) och t(i) initieras (innan while-loopen) eftersom första while-kontrollen använder x(1).
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback