函数文件需要在编辑器中提前编好程序。点击上面的**“+”号,有一个function,点开就可以编写函数。
我的是中文版,和你的对照着可以
函数文件不可以直接运行,必须保存为m文件后,在你的主程序内调用,平常用的很多函数都是这么用的,比如说求余函数 rem(x,y) ,如果没有x,y的实际值是没有函数的实际意义的。
附上我以前的一些简单的自定义函数吧。
记得一定要保存m文件在调用
Matlab中的程序有以下三种类型,现举例如下:
(1)f=@(x)x^2+x+1
(2)syms x;f=2x^3-x^2+1
或
syms x;f=inline('2x^3-x^2+1')
(3)建立M文件
function f=fun(x)
f=x^2-2x+1
对于你的问题,有多种解决方法,现举一例(是我认为最好的解决办法)
(1)建立M文件,在其中输入如下内容:
function f=fun(x,i)
%x,i均位向量。
f=zeros(length(i),length(x));%预分配变量空间
for k=1:length(i)
f(k,:)=x^i %相当于建立一个含有两个变量的函数。
end
在调用时,如果你需要计算x=[1:10];i=1:2;时f的函数值。可以在MATLAB命令窗口中输入如下命令:
x=[1:5];i=1:2;
f=fun(x,i)
运行所得结果为:
f=
1 2 3 4 5
1 4 9 16 25
当然,此时,若只需求某一个数的某个次方也行。
例如:要求6^3,在MATLAB命令窗口中输入
y=fun(4,3)
得到结果为
y=
64
其他,依次类推。
相当于C语言里面的子函数 声明方法: out=函数名(in1,in2,in3)
声明完之后就是 定义函数的代码
例: result=adder(a,b)
result=a+b;
end
然后点击保存(注意不是运行,而是保存)
然后就能在命令行里面使用你定义的函数了
例: >> a=1;
>>b=2;
>>c=adder(a,b);。
matlab的表达式中的括号全部用圆括号()
函数的定义如下:
function
[outpara1,outpara2,]=function_name(input1,input2,)
输入输出参数不是必须的,可以没既没有输入参数也没有输出参数。
函数的主体就是你要实现的功能
先建一个函数文件,注意文件名必须为f2
文件内容就是
function
z=f2(t,s)
z=[exp(-t+s),exp(-t+3s)+exp(-2t+4s);0,exp(-4t+4s)];
运行一下,然后你在命令窗口输入f2(3,4)就能直接调用
函数如下:
function ind = findNearest(x, desiredVal)
[m,n] = size(x); %%%% 先确定x的大小
erro = abs(x(:)-desiredVal); %%%% 计算误差值,矩阵需要拉成一维向量
min_e = min(erro); %%%% 找到最小误差
temp = reshape(erro,m,n); %%%%% 将一维向量恢复成矩阵
[a,b] = find(temp==min_e); %%%%% 找到最小误差对应的下标
ind = [a b]; %%%% 返回 a 为下标的行,b 为下标中的列
结果测试:
>> A = rand(3) %%%% 产生0到1均匀分布随机数
A =
03922 07060 00462
06555 00318 00971
01712 02769 08235
>> desired = 05 %%%% 测试数据05
desired =
05000
>> findNearest(A,desired) %%%% 调用函数找最接近数下标
ans =
1 1 %%%%% 结果为1 1 ,即第一行第一列,03922确实是最接近05。验证通过
copyright(c) cxd1301
可以,最基本的方法,是新建一个m文件,定义funcition函数
无返回值就 直接写 function 函数名(参数列表)
有返回值就 写 [返回参数列表]=function 函数名(参数列表)
举例如下:
注意保存的时候,文件名和函数名一致
运行结果如下:
还有inline和匿名函数 方法也可以!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)