我的问题很清楚。 我在MATLAB中有一个目标函数。例如,我有f = @(x)(x(1)+ x(2)* K)+其他东西。 因为目标函数是漫长而复杂的,所以我想事先定义一些变量并将它们替换为目标函数。 例如,我想设置M = x(1)+ x(2)以便在目标函数中写入M * K. 我试过M = @(x)x(1)+ x(2)并在目标函数中替换但是没有用。 有什么想法吗? 此致
答案 0 :(得分:1)
如果您的目标函数很复杂,请在单独的M文件中定义它,例如:
function [out1 out2 out3] = complex_cost_fn(in1, in2, in3, in4, in5)
%%COMPLEX FUNCTION WITH MULTIPLE SUBFUNCTIONS
end
function cost1 = fn1(in1, in3, ..)
.....
end
function gradients = fn2(in2, in4, ..)
....
end
然后定义一个句柄:
my_cost = @(in1, in2, in3) complex_cost_fn(in1, in2, in3, in4, in5);
其中“in1,in2,in3”是您将提供给“my_cost”的输入参数,以及在创建句柄时初始化一次的“in4,in5”输入。
然后,如果需要,您可以将“my_cost”传递给另一个函数,并将其命名为:
[out1 out2 out3] = my_cost(in1, in2, in3);