Matlab类使用的时间开销过大问题-解决

在上一篇文章中介绍了类的使用

Matlab面向对象的编程-类使用_heda3的博客-CSDN博客_matlab面向对象程序设计

问题:在使用的过程中发现,增加了类的使用后出现程序运行的时间变得很长,从原先3min跑完一段程序,变为1h以上。

分析:在对类的成员变量数组进行索引时,会增加时间的开销,通过验证当类的成员数组大小在100以内时运行时间无太大影响,当成员变量数组大小在1000万以上时,时间开销大大增加,正如问题所述。

classdef  Class_RR
   properties 
       
    RR=0;
    
   end
   
   methods
%方法定义的方式1
%       function obj = ClassName(arg1,...) 
%          obj.PropertyName = arg1;
%          ...  
%       end  
 
%方法定义的方式2
 
      %初始化函数 
      function   obj=InitialMethod(obj,arg1)
           
              obj.RR=zeros(arg1,1);
 
      end
   end
   
end

global RR_Var;
RR_Var=Class_RR;%创建对象
RR_Var=RR_Var.InitialMethod(10000000);%对类属性初始化

while i<10000000

  RR_Var.RR(i)=20;

i=i+1;

end

解决方式:

  将过大的类成员变量数组取消类的索引,更改为结构体数组索引


function RR_S_InitialFunction(arg1)

global RR_Var_S;
    RR_Var_S.RR=zeros(arg1,1);

end


global RR_Var_S;
Len=10000000;
RR_S_InitialFunction(Len);
while i<Len

RR_Var_S.RR(i)=20;
i=i+1;
end

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

heda3

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值