
matlab程序问题,为什么说我输入的参数不够
x0=[45,53];lb=[0,-180];ub=[180,180];[x,fval,exitflag,output]=fmincon('fmin',x0,[],[],...
x0=[45,53];
lb=[0,-180];
ub=[180,180];
[x,fval,exitflag,output]=fmincon('fmin',x0,[],[],[],[],lb,ub)
function f=fmin(beta,xiemianjiao)
global zong san fa gaodujiao fangweijiao
rushejiao=[];
reneng=[];
meitian=[];
for i=1:8760
rushejiao(i,1)=cos(beta*pi/180)*sin(gaodujiao(i,1)*pi/180)+sin(beta*pi/180)*cos(gaodujiao(i,1)*pi/180)*cos((xiemianjiao-fangweijiao(i,1))*pi/180);
reneng(i,1)=fa(i,1)*rushejiao(i,1)+san(i,1)*cos(beta/2*pi/180)^2+zong(i,1)*0.1*sin(beta/2*pi/180)^2;
end
for i=1:365
meitian(i,1)=sum(reneng(24*i-23:24*i,1));
end
dong=(sum(meitian(1:59,1))+sum(meitian(334:365,1)))/90;
chun=sum(meitian(60:152,1))/92;
xia=sum(meitian(153:245,1))/92;
qiu=sum(meitian(246:333,1))/91;
f=(dong-7.377777778)/7.377777778+(chun-15.47826087)/15.47826087+(xia-24.15217391)/24.15217391+(qiu-17.81318681)/17.81318681; 展开
lb=[0,-180];
ub=[180,180];
[x,fval,exitflag,output]=fmincon('fmin',x0,[],[],[],[],lb,ub)
function f=fmin(beta,xiemianjiao)
global zong san fa gaodujiao fangweijiao
rushejiao=[];
reneng=[];
meitian=[];
for i=1:8760
rushejiao(i,1)=cos(beta*pi/180)*sin(gaodujiao(i,1)*pi/180)+sin(beta*pi/180)*cos(gaodujiao(i,1)*pi/180)*cos((xiemianjiao-fangweijiao(i,1))*pi/180);
reneng(i,1)=fa(i,1)*rushejiao(i,1)+san(i,1)*cos(beta/2*pi/180)^2+zong(i,1)*0.1*sin(beta/2*pi/180)^2;
end
for i=1:365
meitian(i,1)=sum(reneng(24*i-23:24*i,1));
end
dong=(sum(meitian(1:59,1))+sum(meitian(334:365,1)))/90;
chun=sum(meitian(60:152,1))/92;
xia=sum(meitian(153:245,1))/92;
qiu=sum(meitian(246:333,1))/91;
f=(dong-7.377777778)/7.377777778+(chun-15.47826087)/15.47826087+(xia-24.15217391)/24.15217391+(qiu-17.81318681)/17.81318681; 展开
展开全部
保存成函数之后运行,需要给函数提供输入参数
如果你的工作空间中有一个变量vector,你需要对其标准化
在编写好cwstd.m文件之后
在命令行输入std=cwstd(vector);
就可以看到生成了std变量,是vector经过标准化之后的结果
如果你有另外一个变量a,想将其标准化,结果存在b中
那么在命令行输入b=cwstd(a);
写成函数文件之后,输入输出参数都只是名字
供函数内部调用和返回,已经和你原本空工作空间中的变量没有关系了
因此,你可以在调用函数的时候给它输入不同名字的参数,输出不同名字的参数
如果你的工作空间中有一个变量vector,你需要对其标准化
在编写好cwstd.m文件之后
在命令行输入std=cwstd(vector);
就可以看到生成了std变量,是vector经过标准化之后的结果
如果你有另外一个变量a,想将其标准化,结果存在b中
那么在命令行输入b=cwstd(a);
写成函数文件之后,输入输出参数都只是名字
供函数内部调用和返回,已经和你原本空工作空间中的变量没有关系了
因此,你可以在调用函数的时候给它输入不同名字的参数,输出不同名字的参数
展开全部
将子函数
function f=fmin(beta,xiemianjiao)
修改为
function f=fmin(x)
x(1)=beta;
x(2)=xiemianjiao;
其他不用改,你再试试
function f=fmin(beta,xiemianjiao)
修改为
function f=fmin(x)
x(1)=beta;
x(2)=xiemianjiao;
其他不用改,你再试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
追问
我的未知量只有beta 和xiemianjiao,其他都是已经导到matlab workspace里的数据
追答
你的程序fmin(建议不要用和自带程序一样的名字命名函数、程序)未知量应该只有一个x。beta和xiemianjiao在程序中分别用x(1)和x(2)表示。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
提示什么错误
追问
Attempted to access gaodujiao(1,1); index out of bounds because size(gaodujiao)=[0,0].
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询