The function return the value "phi_dot" might be unset (warning)

6 views (last 30 days)
This is only the last part of my code, i don't understand why matlab tells me the message "The function return the value "phi_dot" might be unset (warning)". Anyone can help me to find any solution, please?
(I don't put all the code because it works untill H=jacobian...)
A = jacobian(f,x);
%Linearizzazione delle uscite
H = jacobian(h,x);
%% Ricavo la PHI da utilizzare per il calcolo del gramiano
%condizione iniziale per l'equazione differenziale
F0 = eye(size(A)); %uso size(A) perchè phi non l'ho ancora definita e A e phi hanno stesse dimensioni
%definisco la funzione a cui applicare la ode
odefun = @(t,phi) state_sensitivity_matrix(t,phi,A);
%Calcolo la ode con vettori dei tempi pari a t (vedi inizio programma) e
%condizione iniziale F0 -> riportata in un vettore colonna solo e non a
%matrice
[T,F] = ode45(odefun,t,F0(:));
%Riporto le varie F (che sarebbero le phi) nel tempo in forma matriciale
F = reshape(F.',size(A(1)),size(A(2)),[]);
%% Funzione che apporta alcune modifiche per poter usare la ode45 con
%%matrici e sarà la stessa funzione da passare alla ode per risolvere
%%l'equazione differenziale
function phi_dot = state_sensitivity_matrix(t1,phi,A)
%Siccome phy ha la stessa dimensione di A, con reshape dico a matlab che
%phy è una matrice delle stesse dimensioni di A e la chiamo F
F = reshape(phi,size(A));
%Siccome l'equazione differenziale da risolvere è: phi_dot=A*phy inizio a
%calcolare il prodotto matriciale A*phy
AF = A*F;
%Adesso scrivo l'equazione differenziale vera e propria ma riscrivo A*phi
%come se fosse un vettore colonna solo dove ogni colonna viene riportata
%sotto alla precedente fino ad ottenere un vettore colonna
%per esempio [1 2; 3 4] diventerebbe [1 2 3 4]'
phy_dot = AF(:);
end

Accepted Answer

Simone Besana
Simone Besana on 13 Apr 2022
I found the error. This is a very stupid error. The problem was that in the function i wrote
function phi_dot=...
but in the end of the function i wrote
phy_dot = AF(:);
end
so it didn't matching....

More Answers (0)

Tags

Products


Release

R2019b

Community Treasure Hunt

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

Start Hunting!