查看完整版本 : sol是起什么作用?
exitenter4073
2008-08-21, 15:23
function [f]=myfun(sol,bnd)
x=sol;
n=length(x);
f=0;
for i=1:n
f=f+x(i)*i;
end
请问,sol是什么意思?起什么作用?
汗……
sol,bnd是输入参数,传参用的
f是输出参数
上面的函数都没用到bnd
其实可以改成
function [f]=myfun(x)
n=length(x);
f=0;
for i=1:n
f=f+x(i)*i;
end
% myfun.m
% 这段代码定义了一个函数myfun
% 输入矩阵x
% 输出f
%
% 把代码存为myfun.m
% 在命令窗口中执行
% >>a=[4,5,6];
%
% >>b=myfun(a)
% 输出
% b =
%
% 32
function [f]=myfun(x)
n=length(x);
f=0;
for i=1:n
f=f+x(i)*i;
end
% 函数执行过程如下
% 输入参数x获得值a的值
% n取得x的长度3
% f为0
% i从1到3
% f=f+x(i)*i;
% 最终f=32
% b获得输出参数f的值
exitenter4073
2008-08-21, 15:54
有时候是这样:
有时候是这样:
function [f]=myfun(sol,bnd)
x1=sol(1)
x2=sol(2)
但运行时,为何总提示sol没有定义?
怎么运行的?
对
function [f]=myfun(sol,bnd)
x1=sol(1)
x2=sol(2)
的情况
把代码存为myfun.m
在命令窗口中执行
>>x=[1,2];
>>b=[];
>>f=myfun(x,b)
看报什么错
最好把源码和错误提示贴上来
exitenter4073
2008-08-21, 16:11
function[sol,eval]=myf(sol,options)
x1=sol(1);
x2=sol(2);
r1=0.1;
r2=0.8;
g1=x1-2*x2+1;
g2=x1.^2/4-gx2.^2+1;
if(g1>=0)&(g2>=0)
eval=(x1-2).^2+(x2-1).^2;
else
eval=(x1-2).^2+(x2-1).^2+r1*g1+r2*g2;
eval=-eval;
end
运行后,提示:
??? Input argument "sol" is undefined.
Error in ==> myf1 at 2
x1=sol(1);
1029
已修改
你下载后解压到工作路径
打开testmyf.m运行
exitenter4073
2008-08-21, 16:31
你不会直接把函数文件运行了吧
原来是这样.问题解决了.真高手啊,呵呵.我刚接触matlab,有很多问题不懂.
vBulletin® v3.8.3,版权所有 ©2000-2025,Jelsoft Enterprises Ltd.