Problema grafico matlab

di il
1 risposte

Problema grafico matlab

Buongiorno a tutti, vi presento un problema forse banale, ma essendo alle prime armi con matlab non riesco a risolverlo. Ho una funzione definita a tratti (due tratti) di cui devo calcolare i valori di y,ydt,ydtdt. Voglio semplicemente visualizzare su un unico grafico queste tre curve.
Vi posto il codice che ho messo:
>> x_a = 0:0.0002:1;
if (x_a >=0) & (x_a < 0.5), y = 2*(x_a).^2., ydt = 4*x_a, ydtdt = 4;
else y = 1-2*(1-x_a).^2., ydt = 4*(1-x_a), ydtdt = -4;
end;
plot (x_a,y,x_a,ydt,x_a,ydtdt,'red')
MI spiegate perchè matlab mi fa un grafico come se leggesse solo i valori che seguono "else" per tutta la durata dell'intervallo, senza utilizzare anche le prime tre equazioni?

grazie

1 Risposte

  • Re: Problema grafico matlab

    Ciao,
    penso tu abbai già risolto ormai. Comunque ecco una possibile soluzione:
    • clc; %pulisce la schermata del command window
      clear all; %azzera tutte le variabili presenti in workspace

      x = 0:0.02:1;

      x_a= x(1,find(x <0.5)); %creo un subvettore x_a delle componenti di x<0.5

      y_a = 2*(x_a).^2;
      ydt_a = 4*x_a;
      ydtdt_a = 4;

      x_b= x(1,find(x >0.5)); %creo un subvettore delle componenti di x>0.5

      y_b = 1-2*(1-x_b).^2;
      ydt_b = 4*(1-x_b);
      ydtdt_b = -4;

      plot (x_a , y_a ,'ok', x_a, ydt_a,'*c', x_a ,ydtdt_a ,'dr') % 'ok' significa circoletti (o) di colore nero(k), vedi help plot
      hold on; %mantiene in memoria il plot precedente e puoi aggiungere un successivo plot sulla stessa figura
      plot (x_b , y_b ,'oy', x_b, ydt_b,'*', x_a ,ydtdt_b ,'dm')
    I comandi 'if' ed 'else' non erano ne indispensabili (a meno che lo scopo dell'esercizio fosse prorprio il loro utilizzo), ne ottimali.
    Ho quindi utilizzazato il comando find che individua gli indici degli elementi di un vettore (con determinate caratteristiche) . In questo caso per determinare gli elementi di x>0.5, ecc.
    Chiedimi pure eventuali chiarimenti su altri comandi che ho utilizzato. Ti consiglio comunque
    l'utilizzo dell'help.

    Ciao
Devi accedere o registrarti per scrivere nel forum
1 risposte