Def. di una funzione in due parti del suo dominio in matlab

Nebula2
ho un problema, nello scrivere la funzione che segue:
voglio una funzione che valga x^2 tra -1 e 0, x+sin(100*x) tra 0 e 1, e 0 altrove.

quello che ho scritto è:

function [f] = fun(x);


if (x <= -1) + (x  >= 1) >0 
    f=0;
elseif x  < 0
    f =x.^2;
else
    f =x+sin(100*x);
end


però poi quando voglio fare il grafico, scrivendo:
x=-10:.1:10;
plot(x,fun(x))

vedo che la funzione vale sempre x+sin(100*x).

dove sbaglio?[/code]

Risposte
marx1
Tutto il tuo codice è sbagliato intanto passi x come vettore ma non lo usi come tale quindi ho aggiunto un for poi le condizioni per gli intervalli sono sbagliate ecco il codice corretto
function f = fun(x); 
f=[];
for i=1:length(x)
if ((x(i) >= -1) && (x(i)  <=0 )) 
    f =[f,x(i)^2]; 
elseif ((x(i)  > 0)&&(x(i)<=1)) 
   f =[f,x(i)+sin(100*x(i))]; 
else 
    f=[f,0];
end;
end;

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.