Evaluate gradient function in the for loop.
Ältere Kommentare anzeigen
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 Kommentare
Sara Boznik
am 14 Aug. 2020
What happens if you write A(t)?
HN
am 14 Aug. 2020
Sara Boznik
am 14 Aug. 2020
It looks like you have only constant.
HN
am 14 Aug. 2020
Antworten (1)
KSSV
am 14 Aug. 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 Kommentare
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
am 14 Aug. 2020
KSSV
am 14 Aug. 2020
What is F in the solver?
HN
am 14 Aug. 2020
KSSV
am 14 Aug. 2020
F is a function, it can be evaluated at once. Loop is not required.
HN
am 14 Aug. 2020
KSSV
am 14 Aug. 2020
It is suggested to post the code here..so that if not me others also can help you.
Kategorien
Mehr zu Mathematics finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!