永发信息网

优化matlab程序,加快运算速度

答案:2  悬赏:0  手机版
解决时间 2021-02-19 18:29
本人小白,编了一个MATLAB程序,想要计算有约束的最优解。但是计算太慢,一个五行四列的测试用文件,竟然需要算2个半小时。可是我的真实文件有1500行,那得算足足一个月。。跪求高手帮忙优化,让计算速度得到实质提高!不甚感激!
程序如下:

z1=[0.54;1.09];
z2=[0;0.90];
z3=[0.54;1.09];
dz=0.01;

num_z3=fix((z3(2,1)-z3(1,1))/dz+1);
num_z2=fix((z2(2,1)-z2(1,1))/dz+1);
num_z1=fix((z1(2,1)-z1(1,1))/dz+1);
mm_total=num_z2*(num_z1*2+1-num_z3)*num_z3/2;
yy=zeros(mm_total,5);

load data.txt -ASCII
mm=1;
for zz3=z3(1,1):dz:z3(2,1)
for zz1=zz3:dz:z1(2,1)
for zz2=z2(1,1):dz:z2(2,1)
idata=1:length(data(:,1));
yy(mm,1)=sum((data(idata,4)-data(idata,1).*zz1-data(idata,2).*zz2+data(idata,3).*zz3).^2);
%%原方程形如y=z1*a1+z2*a2+z3*a3,其中z1z2z3为要拟合的有限定范围的量
yy(mm,2)=mm;
yy(mm,3)=zz1; %%用于后期调用最小值的相应ZZ1
yy(mm,4)=zz2;
yy(mm,5)=zz3;
mm=mm+1;
end
end
end
for i=1:length(yy(:,1))
if yy(i,1)==min(yy(:,1))
mmmin=yy(i,2);
%zz1min=yy(i,3);
%zz2min=yy(i,4);
%zz3min=yy(i,5);
end
end
最佳答案
z1=[0.54;1.09];z2=[0;0.90];
z3=[0.54;1.09];
dz=0.01;

num_z3=fix(diff(z3)/dz+1);num_z2=fix(diff(z2)/dz+1);
num_z1=fix(diff(z1)/dz+1);
mm_total=num_z2*(num_z1*2+1-num_z3)*num_z3/2;
yy=zeros(mm_total,5);

load data.txt -ASCII
mm=1;

for zz3=z3(1,1):dz:z3(2,1)
for zz1=zz3:dz:z1(2,1)
for zz2=z2(1,1):dz:z2(2,1)
idata=1:length(data(:,1));
yy(mm,1)=sum((data(idata,4)-data(idata,1).*zz1-data(idata,2).*zz2+data(idata,3).*zz3).^2);
%%原方程形如y=z1*a1+z2*a2+z3*a3,其中z1z2z3为要拟合的有限定范围的量
yy(mm,2)=mm;
yy(mm,3)=zz1; %%用于后期调用最小值的相应ZZ1
yy(mm,4)=zz2;
yy(mm,5)=zz3;
mm=mm+1;
end
end
end

Y=yy(:,1)a=find(Y==min(Y))
mmmin=yy(a,2)

你中间那个循环着实看不懂你要表达的数学意思是什么,主要是中间三个循环影响了你的速度。都是可以去掉的。
或许你可以把你一开始的数学模型和目的说出来,是优化函数,还是拟合参数等等,辅之以一定的数据,别人才能更好给你解答。
你的matlab 代码里面全是 C、C++、VB等语言的影子
全部回答
没有工具箱支持mathematica与matlab的相互调用,除非编程实现。如果要在matlab中使用符号计算,最好用maple+maple toolbox for matlab+matlab,可以把maple当作matlab的内置工具箱使用。如果有maple 14那就不需要maple toolbox for matlab,maple 14安装时会自动检测电脑中是否安装了matlab。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
萧山区雷迪森大酒店前台电话多少
武夷山金骏眉 怎么的味道是好茶 要怎么评茶
民航服务人员如何才能让民航乘客感觉满意。。
【文天祥】我眼中的文天祥600字作文
宠物狗泰迪的正常体温是多少?
重庆鼎撰印刷厂在什么地方啊,我要过去处理事
万科第五园小学是属于私营还是国营
荣事达滚筒洗衣机上预洗是用来干嘛的
宠物服务中心怎么去啊,有知道地址的么
女人把男人的微信删除什么意思?一定是讨厌了
鱼儿山镇在哪里啊,我有事要去这个地方
克里斯蒂娜·阿奎莱拉怎么会胖了。2010年的电
文之湾在什么地方啊,我要过去处理事情
sql server 查看一个sql用了哪些索引
用“渐渐、终于、成功”这几个词写几句意思连
推荐资讯
至上励合乐队哪首歌的歌词有《向快乐出发,世
闷 闷 闷 要去一个陌生的城市散散心!翻译英
鞍山有什么好的中专
关于杜甫的故事有
Q9蓝牙音响用什么充电器充电
龙岩市乡镇赶集大全
韩国著名的江河湖海
凤凰传奇的玲花和曾义到底有没有一腿
郑则仕演的鬼片中有龙凤胎的影片叫啥
井的成语是什么
徐泾坐地铁到七浦路
300字作文一中我爱你
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?