matlab ga函数的非线性约束和目标函数能不能不单独写M文件,把所有的代码都放到一个M文件可以吗?

可以的话请给个例子(包括非线性约束) 谢啦

可以,将所有函数都写到一个文件中

不过这个文件也只能是函数文件


你可以为你的函数文件先写一个总函数,类似于C语言的main函数

然后其它的函数写在后面

写在同一个函数文件中的函数是可以互相调用的


例如:

function []=main()
   .....
   .....
   x = ga(@objfun,nvars,.....);
   .....
end

function output=objfun(x)
  .....
  .....
end

实际上,就是将原来要在命令行里运行的代码

或者要写在脚本m文件中要运行的代码写到main函数中

当然不一定要命名为main,可以改其它名字

只要将该函数放在最先的位置就可以了

函数m文件以第一个定义的函数作为主函数

而后面可以定义更多的函数,都可以被主函数调用



这样就是将优化函数、约束函数、和主函数写在同一个文件的办法

但是,由于主体运行的代码被被封装为一个函数

所以不能像脚本m文件那样调用base工作空间中变量

生成的变量也不保存在base工作空间中

当函数运行完毕,退出的时候,它运行时所产生的变量将会被清空

你可以将要输入和输出的变量以函数输入参数和输出参数的形式传递

实际上不及用脚本m文件方便

但是脚本m文件中是不能用function语句定义函数的

温馨提示:答案为网友推荐,仅供参考
相似回答