How do I access and plot thetadot vs. time from function I have created?
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Shlok Pravinbhai Kansara
am 8 Okt. 2022
Bearbeitet: Shlok Pravinbhai Kansara
am 8 Okt. 2022
function thetadot= oscltr(t,theta)
A= [0 0 0.5 0 0 0; 0.5 0 0 0 0 0.5; 0.5 0.5 0 0 0 0; 0 0.5 0 0 0 0; 0 0 0.5 0 0 0; 0 0 0 0.5 0.5 0]; % edge weight matrix
D= [0.5 0 0 0 0 0; 0 1 0 0 0 0; 0 0 1 0 0 0; 0 0 0 0.5 0 0; 0 0 0 0 0.5 0; 0 0 0 0 0 1]; %Diagonal in-degree matrix
L= D-A; %Laplacian matrix
N=6;
K=50;
wi=[1; 1.1 ;0.9; 0.85; 2; 2.1];
thetadot=wi-(K/N)*L*theta;
end
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 8 Okt. 2022
Please see my response at https://www.mathworks.com/matlabcentral/answers/1818985-how-to-work-variables-outside-function#answer_1068360 discussing why it is unlikely that you want to access the internal variables computed by an ode function: such a record would have far too many entries and would also not have entries for most of the time steps.
1 Kommentar
Weitere Antworten (1)
Ghazwan
am 8 Okt. 2022
Bearbeitet: Walter Roberson
am 8 Okt. 2022
There are several ways, one of whith would be
Dtheta=diff(theta) %theta = values
Dtime=diff(time) %time = time values.
ThetaDot = Dtheta./Dtime.
plot(Dtheta,time) % you have to be careful in case there is 0/0 somewhere.
2 Kommentare
Walter Roberson
am 8 Okt. 2022
I recommend using gradient() instead. The timestep for ode45 is typically irregular.
Siehe auch
Kategorien
Mehr zu Ordinary Differential Equations finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!