在上一篇文章中介绍了类的使用
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