How do I access and plot thetadot vs. time from function I have created?

3 Ansichten (letzte 30 Tage)
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

Akzeptierte Antwort

Walter Roberson
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.

Weitere Antworten (1)

Ghazwan
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
Walter Roberson am 8 Okt. 2022
I recommend using gradient() instead. The timestep for ode45 is typically irregular.
Torsten
Torsten am 8 Okt. 2022
Just call the function with the values for theta of your choice.

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by