Evaluate gradient function in the for loop.
Mostra commenti meno recenti
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 Commenti
Sara Boznik
il 14 Ago 2020
What happens if you write A(t)?
HN
il 14 Ago 2020
Sara Boznik
il 14 Ago 2020
It looks like you have only constant.
HN
il 14 Ago 2020
Risposte (1)
KSSV
il 14 Ago 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 Commenti
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
il 14 Ago 2020
KSSV
il 14 Ago 2020
What is F in the solver?
HN
il 14 Ago 2020
KSSV
il 14 Ago 2020
F is a function, it can be evaluated at once. Loop is not required.
HN
il 14 Ago 2020
KSSV
il 14 Ago 2020
It is suggested to post the code here..so that if not me others also can help you.
Categorie
Scopri di più su Mathematics in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!