Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
初级会员
注册日期: 2008-06-06
年龄: 47
帖子: 9
声望力: 0 ![]() |
![]()
function [f]=myfun(sol,bnd)
x=sol; n=length(x); f=0; for i=1:n f=f+x(i)*i; end 请问,sol是什么意思?起什么作用? |
![]() |
![]() |
![]() |
#2 |
普通会员
注册日期: 2008-08-17
年龄: 36
帖子: 70
声望力: 20 ![]() ![]() |
![]()
汗……
sol,bnd是输入参数,传参用的 f是输出参数 上面的函数都没用到bnd 其实可以改成 代码:
function [f]=myfun(x) n=length(x); f=0; for i=1:n f=f+x(i)*i; end |
![]() |
![]() |
![]() |
#3 |
普通会员
注册日期: 2008-08-17
年龄: 36
帖子: 70
声望力: 20 ![]() ![]() |
![]() 代码:
% 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的值 |
![]() |
![]() |
![]() |
#4 |
初级会员
注册日期: 2008-06-06
年龄: 47
帖子: 9
声望力: 0 ![]() |
![]()
有时候是这样:
有时候是这样: function [f]=myfun(sol,bnd) x1=sol(1) x2=sol(2) 但运行时,为何总提示sol没有定义? |
![]() |
![]() |
![]() |
#5 |
普通会员
注册日期: 2008-08-17
年龄: 36
帖子: 70
声望力: 20 ![]() ![]() |
![]()
怎么运行的?
对 function [f]=myfun(sol,bnd) x1=sol(1) x2=sol(2) 的情况 把代码存为myfun.m 在命令窗口中执行 >>x=[1,2]; >>b=[]; >>f=myfun(x,b) 看报什么错 最好把源码和错误提示贴上来 |
![]() |
![]() |
![]() |
#6 |
初级会员
注册日期: 2008-06-06
年龄: 47
帖子: 9
声望力: 0 ![]() |
![]()
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); |
![]() |
![]() |
![]() |
#7 |
普通会员
注册日期: 2008-08-17
年龄: 36
帖子: 70
声望力: 20 ![]() ![]() |
![]()
你不会直接把函数文件运行了吧
|
![]() |
![]() |
![]() |
#8 |
初级会员
注册日期: 2008-06-06
年龄: 47
帖子: 9
声望力: 0 ![]() |
![]() |
![]() |
![]() |