Azzera filtri
Azzera filtri

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

5 visualizzazioni (ultimi 30 giorni)
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

Risposta accettata

Walter Roberson
Walter Roberson il 8 Ott 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.

Più risposte (1)

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

Accedi per commentare.

Community Treasure Hunt

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

Start Hunting!

Translated by