查看: 157|回复: 6|关注: 0

[已解决] 关于fmincon函数的目标函数的设置问题!

[复制链接]

新手

12 麦片

财富积分


050


3

主题

7

帖子

0

最佳答案
现有一段代码,先计算了几个变量(如a,b,c,d)的值,然后通过函数参数传递到目标函数fun(a,b,c,d,x)中,
其中a,b,c,d作为常数使用,x为自变量。请问怎么能把a,b,c,d和x区分开呢?
因为它们都是通过参数传递到fun中的,对于fun而言,是不是成自变量对待了?
望指点!多谢!




新手

41 麦片

财富积分


050


0

主题

44

帖子

9

最佳答案
发表于 2019-11-10 12:45:47 来自手机 | 显示全部楼层
g=@(x) fun(a,b,c,d,x)

新手

12 麦片

财富积分


050


3

主题

7

帖子

0

最佳答案
 楼主| 发表于 2019-11-10 15:44:38 | 显示全部楼层
hhh619 发表于 2019-11-10 12:45
g=@(x) fun(a,b,c,d,x)

这个好像不灵啊,设置了以后,fmincon会提示输入参数数目不足。

新手

41 麦片

财富积分


050


0

主题

44

帖子

9

最佳答案
发表于 2019-11-10 17:16:29 | 显示全部楼层
你应该是 fun 和 g 两个函数都是匿名函数,如果是这样你可以看一下这篇帖子
https://www.ilovematlab.cn/thread-314195-1-1.html
我的建议是fun函数你可以写成函数文件,然后用g=@(x) fun(a,b,c,d,x)构造匿名函数

新手

12 麦片

财富积分


050


3

主题

7

帖子

0

最佳答案
 楼主| 发表于 2019-11-13 10:36:12 | 显示全部楼层
hhh619 发表于 2019-11-10 17:16
你应该是 fun 和 g 两个函数都是匿名函数,如果是这样你可以看一下这篇帖子
https://www.ilovematlab.cn/th ...

目标函数fun就是函数文件啊。郁闷。
把a,b,c,d改成全局变量,就可以,但是matlab不提倡这么做。

新手

41 麦片

财富积分


050


0

主题

44

帖子

9

最佳答案
发表于 2019-11-13 13:31:06 来自手机 | 显示全部楼层 |此回复为最佳答案
sapphirechina 发表于 2019-11-13 10:36
目标函数fun就是函数文件啊。郁闷。
把a,b,c,d改成全局变量,就可以,但是matlab不提倡这么做。 ...

我不知道你是怎么做的,我试的是可以的,有一点要注意一下,
当得到a b c d四个变量的值后将其赋值给四个变量a b c d,然后再定义g@(x) fun(a,b,c,d)
如果是先定义匿名函数再赋值我试的是有问题的

新手

12 麦片

财富积分


050


3

主题

7

帖子

0

最佳答案
 楼主| 发表于 2019-11-14 10:15:04 | 显示全部楼层
hhh619 发表于 2019-11-13 13:31
我不知道你是怎么做的,我试的是可以的,有一点要注意一下,
当得到a b c d四个变量的值后将其赋值给四个 ...

我这边也可以了,呵呵。多谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表