MATLAB定义函数
文章目录
MATLAB定义函数1. 常见问题2. 如何定义2.1语法2.2举例 3. 如何使用3.1 得到返回值3.2 将定义的函数作为参数传递给其他函数(函数指针)1. 常见问题
与主流高级语言的区别
MATLAB没有函数指针这种玩意
所以MATLAB中定义函数必须在.m文件中定义,不能跟主脚本定义在一起
比如下面这样是不允许的
% nonlcon函数定义function [g, h] = nonlcon(x)g = [-x(1)^2 + x(2) - x(3)^2, x(1) + x(2)^2 + x(3)^2 - 20];h = [-x(1) - x(2)^2 + 2, x(2) + 2 * x(3)^2 - 3];end% fun函数定义function res = fun(x)res = sum(x.^2) + 8;end[x, fval] = fmincon('fun', rand(3, 1), [], [], [], [], zeros(3, 1), [], 'nonlcon', [])
会报错 “Function might be unused”
解决办法
MATLAB只支持在.m文件中定义函数
创建.m文件,File->New->Function
创建一个新的文件
在文件中定义函数
2. 如何定义
MATLAB只支持在.m文件中定义函数
首先创建.m文件,File->New->Function
创建一个新的文件
2.1语法
function 返回值 = 函数名(参数)函数体end
2.2举例
function [g, h] = nonlcon(x)g = [-x(1)^2 + x(2) - x(3)^2, x(1) + x(2)^2 + x(3)^2 - 20];h = [-x(1) - x(2)^2 + 2, x(2) + 2 * x(3)^2 - 3];end
返回值[g, h]函数名nonlcon参数可以多个, 这里参数是x
3. 如何使用
记得把定义的函数保存并且跟主脚本放在一个目录, 或者添加到路径
3.1 得到返回值
假设函数名为fun
且已经定义
res = fun(x)
3.2 将定义的函数作为参数传递给其他函数(函数指针)
假设函数名为fun
且已经定义
另一个函数func
需要将函数fun
作为参数传递进去
res = func('fun')% 用字符串的形式引用函数名作为参数