Substitute variables in function handle
Show older comments
Hello,
I have two implementations.
- Create functions based on the parameter
- Pass this functions to another function and evaluate them there
I'm creating functions like this:
for i=1:n/2-1
funk{i} = @(x)2*x(i)-2+400*x(i)^3-400*x(i)*x(i+1);
end
I want this to create multiple functions (depends on n) with i to be superset by a number, but WITHOUT being solved right away as i want to hand it over to another function in which this should get solved.
How can I achieve this?
Thanks in advance
1 Comment
KSSV
on 24 Jan 2022
You can try:
funk = @(xi1,xi2)2*xi1-2+400*xi1^3-400*xi1*xi2;
Answers (1)
What you have already done should work.
Although all of the function handles will look the same, they would have captured different values of i
For example,
for i = 1 : 2
funk{i} = @(x)2*x(i)-2+400*x(i)^3-400*x(i)*x(i+1);
end
ws1 = functions(funk{1}).workspace{1}
ws2 = functions(funk{2}).workspace{1}
Notice how the information embedded within the function handles funk{1} and funk{2} is different -- they have different embedded i values.
2 Comments
Clueless
on 24 Jan 2022
x = [1 2 3 4 5 6];
for i = 1 : 2
funk{i} = @(x)2*x(i)-2+400*x(i)^3-400*x(i)*x(i+1);
end
test(funk,x)
function test(fun,x)
fun{1}(x)
fun{2}(x)
end
Categories
Find more on MATLAB in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!