Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2008-08-21, 15:23   #1
exitenter4073
初级会员
 
注册日期: 2008-06-06
年龄: 47
帖子: 9
声望力: 0
exitenter4073 正向着好的方向发展
默认 sol是起什么作用?

function [f]=myfun(sol,bnd)
x=sol;
n=length(x);
f=0;
for i=1:n
f=f+x(i)*i;
end
请问,sol是什么意思?起什么作用?
exitenter4073 当前离线   回复时引用此帖
旧 2008-08-21, 15:29   #2
pslpsl
普通会员
 
注册日期: 2008-08-17
年龄: 36
帖子: 70
声望力: 20
pslpsl 是一个将要出名的人pslpsl 是一个将要出名的人
默认 回复: sol是起什么作用?

汗……
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   #3
pslpsl
普通会员
 
注册日期: 2008-08-17
年龄: 36
帖子: 70
声望力: 20
pslpsl 是一个将要出名的人pslpsl 是一个将要出名的人
默认 回复: sol是起什么作用?

代码:
 
% 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的值
pslpsl 当前离线   回复时引用此帖
旧 2008-08-21, 15:54   #4
exitenter4073
初级会员
 
注册日期: 2008-06-06
年龄: 47
帖子: 9
声望力: 0
exitenter4073 正向着好的方向发展
默认 回复: sol是起什么作用?

有时候是这样:
有时候是这样:
function [f]=myfun(sol,bnd)
x1=sol(1)
x2=sol(2)

但运行时,为何总提示sol没有定义?
exitenter4073 当前离线   回复时引用此帖
旧 2008-08-21, 15:59   #5
pslpsl
普通会员
 
注册日期: 2008-08-17
年龄: 36
帖子: 70
声望力: 20
pslpsl 是一个将要出名的人pslpsl 是一个将要出名的人
默认 回复: sol是起什么作用?

怎么运行的?

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   #6
pslpsl
普通会员
 
注册日期: 2008-08-17
年龄: 36
帖子: 70
声望力: 20
pslpsl 是一个将要出名的人pslpsl 是一个将要出名的人
默认 回复: sol是起什么作用?

你不会直接把函数文件运行了吧
pslpsl 当前离线   回复时引用此帖
旧 2008-08-21, 16:11   #7
exitenter4073
初级会员
 
注册日期: 2008-06-06
年龄: 47
帖子: 9
声望力: 0
exitenter4073 正向着好的方向发展
默认 回复: sol是起什么作用?

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);
exitenter4073 当前离线   回复时引用此帖
旧 2008-08-21, 16:23   #8
pslpsl
普通会员
 
注册日期: 2008-08-17
年龄: 36
帖子: 70
声望力: 20
pslpsl 是一个将要出名的人pslpsl 是一个将要出名的人
默认 回复: sol是起什么作用?

附件 1029


已修改
你下载后解压到工作路径
打开testmyf.m运行
上传的附件
文件类型: rar work.rar (300 字节, 72 次查看)
pslpsl 当前离线   回复时引用此帖
旧 2008-08-21, 16:31   #9
exitenter4073
初级会员
 
注册日期: 2008-06-06
年龄: 47
帖子: 9
声望力: 0
exitenter4073 正向着好的方向发展
默认 回复: sol是起什么作用?

引用:
作者: pslpsl 查看帖子
你不会直接把函数文件运行了吧
原来是这样.问题解决了.真高手啊,呵呵.我刚接触matlab,有很多问题不懂.
exitenter4073 当前离线   回复时引用此帖
回复

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 00:22


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.