Evaluate gradient function in the for loop.
Mostrar comentarios más antiguos
function S = Get_Vel(t)
ts=0.0001;
x(t)=cos(2*pi*t)
y(t)=sin(2*pi*t)
vx(t)=gradient(x,ts)
vy(t)=gradient(y,ts)
S=[vx;vy]
end
function A = Compute(t,ts,~,~,~)
S=Get_Vel(t)
end
function solve = solver(F,t0,tf,y0,~)
for t=t0:ts:tf-ts
A =F(t,ts,~,~)
end
solve =A
end
%% MAIN
Result=solver(@Compute,t0,tf,y0,~)
But, since solver used a for loop gradient failed.
Any help is apperciated.
Thank you
4 comentarios
Sara Boznik
el 14 de Ag. de 2020
What happens if you write A(t)?
HN
el 14 de Ag. de 2020
Sara Boznik
el 14 de Ag. de 2020
It looks like you have only constant.
HN
el 14 de Ag. de 2020
Respuestas (1)
KSSV
el 14 de Ag. de 2020
ts=0.0001;
x(t)=cos(2*pi*t) % index of x is t, it cannot be, it shows error
y(t)=sin(2*pi*t)
vx(t)=gradient(x,ts) % index cannot be fraction and to use gradient you need to have x as vector
vy(t)=gradient(y,ts)
S=[vx;vy]
You may rather use:
ts=0.0001 ;
vx = sin(2*pi*t) ;
vy = cos(2*pi*t) ;
S=[vx;vy]
10 comentarios
USe the vector version, don't call the function for each step. You proceed like this:
t0 = 0 ; t1 = 10 ;
dt = 0.0001 ;
t=t0:dt:t1 ;
x = cos(2*pi*t)
y = sin(2*pi*t)
vx = gradient(x,t)
vy = gradient(y,t)
S=[vx;vy]
HN
el 14 de Ag. de 2020
KSSV
el 14 de Ag. de 2020
What is F in the solver?
HN
el 14 de Ag. de 2020
KSSV
el 14 de Ag. de 2020
F is a function, it can be evaluated at once. Loop is not required.
HN
el 14 de Ag. de 2020
KSSV
el 14 de Ag. de 2020
It is suggested to post the code here..so that if not me others also can help you.
Categorías
Más información sobre Mathematics en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!