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
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
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 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
Risposte
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!
O fai un ciclo for e tratti elemento per elemento, oppure devi usare le funzioni dei vettori!
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.
E poi scusa perchè x_a è un vettore?io avrei giurato fosse uno scalare...
Ma figurati, mica è ignoranza... poi d'altronde siamo tutti qua per imparare cose nuove no? 
Puoi fare così
ydt e ydtdt non l'ho fatto perché non ho capito come vuoi usarlo

Puoi fare così
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

x_a è un vettore per come l'hai dichiarato. E' un vettore di elementi da 0 a 1 con passo 0.0002
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!!