- why do you keep searching once you do find a match?
- what if t is non-scalar ?
- why are you not using interp1() ?
Unrecognized function or variable
8 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Hello!
I am trying to perform a linear interpolation within a vector of 100 points (beta) so that I can use it in the integrations. When I try to do that matlab gives me the following error: Unrecognized function or variable 'index'.
I do this as part of an optimization program using fmincon where Ti Tf and beta are the optimized variables
I have attached my code below (t is the integration time given by ODE45). Thanks to anyone who can help me!
function [B] = interp(t)
global beta Ti Tf
p = 100;
b1 = beta;
tspan = linspace(Ti,Tf,p);
dt = (Tf-Ti)/(p-1);
for i = 1:length(tspan)
if (t>=tspan(i) && t<tspan(i)+dt)
index=i;
end
end
if index<=(p-2)
if t>=tspan(index)
B = b1(index)+(b1(index+1)-b1(index))*(t-tspan(index))/dt;
else
B = b1(index);
end
else
B = b1(index);
end
end
0 Commenti
Risposte (1)
Walter Roberson
il 6 Gen 2022
Modificato: Walter Roberson
il 6 Gen 2022
for i = 1:length(tspan)
if (t>=tspan(i) && t<tspan(i)+dt)
index=i;
end
end
That only sets index in the case that the if matched something . If it does not, then you never assign to index .
In particular, if t < Ti or t >= Tf or if Ti then you do not assign to index.
Questions:
6 Commenti
Walter Roberson
il 7 Gen 2022
That interp1() call is doing linear interpolation. As I already explained, linear interpolation is not compatible with mathematics of ode*() .
Vedere anche
Categorie
Scopri di più su Interpolation 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!