在将变量放入目标函数之前定义变量

时间:2014-09-06 10:19:37

标签: matlab optimization

我的问题很清楚。 我在MATLAB中有一个目标函数。例如,我有f = @(x)(x(1)+ x(2)* K)+其他东西。 因为目标函数是漫长而复杂的,所以我想事先定义一些变量并将它们替换为目标函数。 例如,我想设置M = x(1)+ x(2)以便在目标函数中写入M * K. 我试过M = @(x)x(1)+ x(2)并在目标函数中替换但是没有用。 有什么想法吗? 此致

1 个答案:

答案 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);