2010-12-05 25 views
0

Je voudrais savoir comment saisir un nombre spécifique à partir d'un intervalle pour le tester et plus tard être capable de construire différentes fonctions sous un graphique. Par exemple (dans ce cas, le 'x' variable),Comment effectuer des instructions sur la variable dépendante d'un graphique dans MATLAB?

x 0:.5:5; 

Ids=ones(x); 
figure;hold on; 

for n = 1:5 
    if(x < 3.0) %problem here 
     Ids(n) = plot(x,x.^x); 
    else 
     if (x > 4.0) %and here 
      Ids(n) = plot(x,-x.^x); 
     end 
    end 
end 

EDIT

Ce que je veux vraiment faire dans Matlab est de pouvoir faire la fonction définie par ce qui suit:

y(x) = { 0     (t - 5) < 0 
     { (t - 5)*(t - x)  x < (t - 5) 
     { (t + x^2)   x >= (t - 5) 

Je ne semble pas comprendre comment représenter graphiquement cette fonction depuis x = 0:.5:10 et t = 0:.1:10. Je sais comment faire ceci sans le t, mais je me perds quand le t est inclus et a différents intervalles comparés au .

+0

Y_Y, pouvez-vous préciser ce que vous voulez faire? Comme l'a écrit gnovice, votre code ne précise pas ce que vous essayez de faire. Pouvez-vous écrire en «mots» ce que vous voulez faire? La fonction f (x) donnée par gnovice répond-elle à ce que vous cherchez? –

Répondre

1

Il est un peu clair de votre code ce que vous essayez de faire, mais il semble que vous voulez créer et tracer une fonction f(x) qui a la forme suivante:

f(x) = [ x  for 3 <= x <= 4 
     [ x^x for x < 3 
     [ -x^x for x > 4 

Si c'est ce que vous voulez pour faire, vous pouvez faire ce qui suit en utilisant logical indexing:

x = 0:0.5:5; %# 11 points spaced from 0 to 5 in steps of 0.5 
y = x;  %# Initialize y 
index = x < 3;     %# Get a logical index of points less than 3 
y(index) = x(index).^x(index); %# Change the indexed points 
index = x > 4;     %# Get a logical index of points greater then 4 
y(index) = -x(index).^x(index); %# Change the indexed points 
plot(x,y);      %# Plot y versus x 
1

Vous pouvez rechercher polynômes morceaux: http://www.mathworks.com/help/techdoc/ref/mkpp.html

Sinon, je suggère de faire deux vecteurs, « x » et « y », pour ainsi dire, et le remplissage y par itérer x et appliquer vos conditions et résultats, puis tracer y contre x. Cela évitera le besoin de tenir l'intrigue.

Si vous voulez animer le dessin, ajoutez plot() à la boucle for suivie de "drawnow". Cela fait un moment que je devais animer des complots alors je suggérerais des tutoriels pour drawnow et l'animation.

+0

Comment puis-je le faire en utilisant la fonction «mkpp» par morceaux? –