【问题标题】:How to write a different handle objective function in MATLAB?如何在 MATLAB 中编写不同的句柄目标函数?
【发布时间】:2020-06-26 07:11:02
【问题描述】:

我有一个具有多个输出的函数,我们假设它们是不同的目标函数f1 和函数f2。如何为这两个目标编写两个处理函数?

function [f1,f2] = myfunc(x)
f1=x^2;
f2=sqrt(x);
end

我试了一下

[obj1,obj2] = @(x)myfunc(x)

【问题讨论】:

  • 为什么不写两个独立的函数呢?
  • @CrisLuengo 很可能是因为他经常需要为同一个参数评估两个函数。
  • @Max 如果两个函数共享大量计算,该参数可能会成立。否则,您总是可以编写一个简单的函数来评估具有相同参数的两个独立函数:@(x) [f1(x), f2(x)]

标签: matlab function


【解决方案1】:

myfunc()中制作f1和f2函数句柄如下:

function [f1, f2] = myfunc()
f1 = @(x) x^2;
f2 = @(x) sqrt(x);
end

然后你可以从你的主脚本/命令窗口调用它们:

[obj1,obj2] = myfunc();
x = 2; % just to test the output
obj1(x);
obj2(x);

【讨论】:

  • 谢谢先生,但我的目标是返回 f1 的值并仅优化 f2,function [f1,f2]=multfunc(x1,x2) f1=x1*log(x2); f2=x2^2; end [~,f2]=@(x1,x2)multfunc(x1,x2) then in the error is:Only functions can return multiple values
猜你喜欢
  • 2019-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多