optimizing for loop that is been called often
1 回表示 (過去 30 日間)
古いコメントを表示
can this loop be optimized? It is called 1m times and is the only thing I couldn't optimize yet.
Oper_year=1:1:Lifetime;
[costM,PVcost,YearProd,Elcost]=deal(zeros(size(Oper_year)));
for j=1:1:length(Oper_year)
if j==1
costM(j)=Mcost*PVprice*PVP;
PVcost(j)=PVprice*PVP+Bcost;
YearProd(j)=sum(PMDb)*PVP;
Elcost(j)=Elprice;
Bcost(j)=Bcost;
else
Bcost(j)=Bcost(1)*(1+bank*Oper_year(j-1));
costM(j)=PVprice*(Mcost*(1+Minf)*(Oper_year(j-1))+Mcost)*PVP;
PVcost(j)=(PVprice*PVP)*(1+bank*Oper_year(j-1))+Bcost(j);
YearProd(j)=sum(PMDb)*PVP*((1-PVdeg)*Oper_year(j-1)+1);
end
end
thanks
0 件のコメント
採用された回答
KSSV
2020 年 2 月 8 日
Oper_year=1:1:Lifetime;
[costM,PVcost,YearProd,Elcost]=deal(zeros(size(Oper_year)));
costM(1)=Mcost*PVprice*PVP;
PVcost(1)=PVprice*PVP+Bcost;
YearProd(1)=sum(PMDb)*PVP;
Elcost(1)=Elprice;
Bcost(1)=Bcost;
Bcost(2:end)=Bcost(1)*(1+bank*Oper_year(1:end-1));
costM(2:end)=PVprice*(Mcost*(1+Minf)*(Oper_year(1:end-1))+Mcost)*PVP;
PVcost(2:end)=(PVprice*PVP)*(1+bank*Oper_year(1:end-1))+Bcost(2:end);
YearProd(2:end)=sum(PMDb)*PVP*((1-PVdeg)*Oper_year(1:end-1)+1);
5 件のコメント
KSSV
2020 年 2 月 8 日
The error is becasue the variable Bcost has been treated as scalar as well as vector. Rename the scalar Bcost to some other name. I followed like below:
% some random values for demo
Lifetime = 12 ;
Mcost = rand ;
PVprice = rand ;
PVP = rand ;
BCost = rand ;
PMDb = rand ;
Elprice = rand ;
bank = rand ;
Minf = rand ;
PVdeg = rand ;
Oper_year=1:1:Lifetime;
[costM,PVcost,YearProd,Elcost,Bcost]=deal(zeros(size(Oper_year)));
costM(1)=Mcost*PVprice*PVP;
PVcost(1)=PVprice*PVP+BCost;
YearProd(1)=sum(PMDb)*PVP;
Elcost(1)=Elprice;
Bcost(1)=BCost;
Bcost(2:end)=Bcost(1)*(1+bank*Oper_year(1:end-1));
costM(2:end)=PVprice*(Mcost*(1+Minf)*(Oper_year(1:end-1))+Mcost)*PVP;
PVcost(2:end)=(PVprice*PVP)*(1+bank*Oper_year(1:end-1))+Bcost(2:end);
YearProd(2:end)=sum(PMDb)*PVP*((1-PVdeg)*Oper_year(1:end-1)+1);
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で Logical についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!