How to loop the constant in a function?

I'm currently stuck on this most likely rather simple problem, but for some reason I can't get it to work. What I want to do is simply to solve the function f(x,k) for a grid of different k:s. As a very simple example, I'd want to solve
y=(x^2)+k for k=1:1:5
with some kind of for-loop, where the answer thus becomes a vector with 5 different answers. My main track has been to loop the command where I ask Matlab to solve the function, i.e. running a script like
for k=1:1:5
X = fminsearch(@ericr,-2,2)
end
where the function looks like
function [ y ] = ericr(x,k)
y=x^2 + k
end
MATLAB does not like this approach at all, and any help if therefore greatly appreciated!
Best regards,
Eric

 Réponse acceptée

Eric
Eric le 10 Oct 2013

0 votes

It turned out it was as easy as making sure "k" is a global variable (I forgot to write "global k" in both the script and the function file).

Plus de réponses (2)

Jos (10584)
Jos (10584) le 10 Oct 2013

0 votes

What do you exactly mean by " solve the function "? Do you mean that you have a set of points (X,Y), and you want to fit the function
y = A*(X^2)+k
through it by looking for the value of A that minimises the distances between y and Y, given a specific value of k?

2 commentaires

Eric
Eric le 10 Oct 2013
Sorry; that was a bit of a sloppy notation on my part. What I meant by "solve" was to minimize y, i.e. for which x (given the k) do I find a local minimum?
Jos (10584)
Jos (10584) le 10 Oct 2013
that would be at x = 0 for every k ... No need for matlab at all ;-)

Connectez-vous pour commenter.

Youssef  Khmou
Youssef Khmou le 10 Oct 2013
Modifié(e) : Youssef Khmou le 10 Oct 2013
Eric, use anonymous functions better,
Here is your example ( its obvious that k is the y solution):
N=10;
for k=1:N
f=@(x) (x.^2)+k;
[a,b]=fminsearch(f,rand);
X(k,1)=a;
X(k,2)=b;
end

Catégories

En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by