Problema grafico matlab

Messaggioda LSN88 » 01/04/2011, 12:01

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

Codice:
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 potreste spiegare 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 (quelle scritte subito dopo if, per intendersi)?In pratica non me la considera una funzione a tratti e non capisco perchè.

grazie a tutti
LSN88
Starting Member
Starting Member
 
Messaggio: 1 di 8
Iscritto il: 01/04/2011, 11:45

Messaggioda AMs » 01/04/2011, 13:33

perché $x_a$ è un vettore e tu fai dei confronti come fosse uno scalare.
O fai un ciclo for e tratti elemento per elemento, oppure devi usare le funzioni dei vettori!
AMs
Junior Member
Junior Member
 
Messaggio: 110 di 168
Iscritto il: 20/09/2007, 14:01
Località: Parma

Messaggioda LSN88 » 01/04/2011, 13:58

Scusa l'ignoranza, ma ho iniziato ad usare matlab due giorni fa e dunque conosco ancora pochissimo di questo linguaggio e devo impararmelo da solo. Potresti farmi un esempio del codice che dovrei inserire al posto di quello che ho scritto?Ti sarei molto grato.
LSN88
Starting Member
Starting Member
 
Messaggio: 2 di 8
Iscritto il: 01/04/2011, 11:45

Messaggioda LSN88 » 01/04/2011, 14:10

E poi scusa perchè x_a è un vettore?io avrei giurato fosse uno scalare...
LSN88
Starting Member
Starting Member
 
Messaggio: 3 di 8
Iscritto il: 01/04/2011, 11:45

Messaggioda AMs » 01/04/2011, 14:16

Ma figurati, mica è ignoranza... poi d'altronde siamo tutti qua per imparare cose nuove no? :)

Puoi fare così
Codice:

clc
clear all

x_a = 0:0.0002:1;
y=zeros(1,length(x_a));

cond=(x_a >=0) & (x_a < 0.5);


y(cond)=x_a(cond).^2;
y(~cond)=4*(1-x_a(~cond));

plot(x_a,y);


ydt e ydtdt non l'ho fatto perché non ho capito come vuoi usarlo :(
Andrea Modenini
Dep. Information Engineering, University of Parma, Italy
www.tlc.unipr.it/modenini
AMs
Junior Member
Junior Member
 
Messaggio: 111 di 168
Iscritto il: 20/09/2007, 14:01
Località: Parma

Messaggioda AMs » 01/04/2011, 14:17

x_a è un vettore per come l'hai dichiarato. E' un vettore di elementi da 0 a 1 con passo 0.0002
Andrea Modenini
Dep. Information Engineering, University of Parma, Italy
www.tlc.unipr.it/modenini
AMs
Junior Member
Junior Member
 
Messaggio: 112 di 168
Iscritto il: 20/09/2007, 14:01
Località: Parma

Messaggioda LSN88 » 01/04/2011, 15:00

Per farti capire, ydt é la derivata rispetto a x di y e ydtdt è la sua derivata seconda. Sono in pratica le equazioni dell'alzata, della velocità e dell'accelerazione di un punto che segue questa legge di moto (che è la legge ad accelerazione costante). Sono leggi di moto che riguardano meccanismi con camme. Comunque grazie mille, adesso proverò a seguire il tuo esempio!!
LSN88
Starting Member
Starting Member
 
Messaggio: 4 di 8
Iscritto il: 01/04/2011, 11:45


Torna a Ingegneria

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite