PDA

查看完整版本 : 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是什么意思?起什么作用?

pslpsl
2008-08-21, 15:29
汗……
sol,bnd是输入参数,传参用的

f是输出参数

上面的函数都没用到bnd

其实可以改成


function [f]=myfun(x)
n=length(x);
f=0;
for i=1:n
f=f+x(i)*i;
end

pslpsl
2008-08-21, 15:46
% 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没有定义?

pslpsl
2008-08-21, 15:59
怎么运行的?

function [f]=myfun(sol,bnd)
x1=sol(1)
x2=sol(2)
的情况

把代码存为myfun.m

在命令窗口中执行

>>x=[1,2];
>>b=[];
>>f=myfun(x,b)

看报什么错
最好把源码和错误提示贴上来

pslpsl
2008-08-21, 16:09
你不会直接把函数文件运行了吧

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);

pslpsl
2008-08-21, 16:23
1029


已修改
你下载后解压到工作路径
打开testmyf.m运行

exitenter4073
2008-08-21, 16:31
你不会直接把函数文件运行了吧

原来是这样.问题解决了.真高手啊,呵呵.我刚接触matlab,有很多问题不懂.