Octave - problem z zadaniem

Witam, mam polecenie: 

Napisz funkcje realizującą poniższy wzór:

 

[tex]dla  x < 0    sin(x)[/tex]

[tex]dla  0 \le x \le 1   x^2[/tex]

[tex]dla x > 1   1[/tex]

 

Narysuj wykres tej funkcji w przedziale <-3;3> dla kroku 0.1

 

Moja funkcja wygląda tak:

function k=wybor(x)
 
if(x<0)
  k=sin(x);
elseif(x>=0&&x<=1)
  k=x^2;
else
  k=1;
 endif
 
endfunction

 

Wywołanie tak:

X=[-3:0.1:3];
plot(X,wybor(X))

 

No i nie działa. Wartości funkcji na wykresie zawsze są równe 1… Co zrobiłem nie tak?

Jeśli porównujesz dwie macierze lub macierz ze skalarem (wektor to też macierz) to dostajesz macierz wartości logicznych.

Jeśli podajesz _if_owi macierz to przejdzie on tylko wtedy gdy wszystkie elementy będą prawdziwe.

Przekazuj swojej funkcji tylko skalary (np. w pętli) albo pozbądź się instrukcji warunkowych.