Share data between two functions
    5 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
Hi,
I need to update and share a variable between two functions to solve a system of ODEs. These functions are, respectively, odefun - the function that ode45 accepts as input - and myOutputFcn - that is the custom output function that ode45 accepts as option.
function dsol_dt = odefun(t, sol, hyspar, L, M)
    dsol_dt = zeros(2,1);
    u     = sol(1,1);
    y     = sol(2,1);
    fri = hyspar.fri;
    ud = y;
    yd = - L(y,fri) / M ;
    dsol_dt = [ud; yd];
end
function status = myOutputFcn(t,sol,flag,hyspar)
    switch flag
        case 'init'
        case ''
            hyspar.fri = RestoringForce(sol(1),sol(2),ecc,hyspar);
        case 'done'
            assignin('base','hyspar.fri',fri);
    end
    status = 0;
end
I would share and update the variable that  is hyspar.fri (fri). When it updates in myOutputFcn through the function RestoringForce, I am only changing the local copy. So, in odefun will not be taken the updated value of the variable fri.
I read the main techniques to share variables between workspaces
but I didn't find any examples that suit me, I guess...
I would like to specify that I can't call RestoringForce in odefun for several different reasons.
Kind regards
Califfo
0 Commenti
Risposte (1)
  darova
      
      
 il 27 Mag 2020
        What abuo this?
function [hyspar1,status] = myOutputFcn(t,sol,flag,hyspar)    
    switch flag
        case 'init'
        case ''
            hyspar.fri = RestoringForce(sol(1),sol(2),ecc,hyspar);
        case 'done'
            hyspar1 = hyspar;
            hyspar1.fri = fri;
    end
    status = 0;
end
Vedere anche
Categorie
				Scopri di più su Ordinary Differential Equations in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!