Oop Matlab,类,不能更改实例';s属性
我在matlab中声明了一个类,这里是构造函数和函数Oop Matlab,类,不能更改实例';s属性,oop,class,matlab,Oop,Class,Matlab,我在matlab中声明了一个类,这里是构造函数和函数 function Ri = RGBimages(datadir) if(isempty(dir(datadir))) warning([datadir, ' is empty']); return; end Ri.dataSrc=datadir; Ri.twoEnds = load([datadir,'\seIndex.txt']); Ri.startFrame = Ri
function Ri = RGBimages(datadir)
if(isempty(dir(datadir)))
warning([datadir, ' is empty']);
return;
end
Ri.dataSrc=datadir;
Ri.twoEnds = load([datadir,'\seIndex.txt']);
Ri.startFrame = Ri.twoEnds(1);
Ri.endFrame = Ri.twoEnds(2);
Ri.numberOfFrames=Ri.twoEnds(2)-Ri.twoEnds(1)+1;
Ri.faceLmks = zeros(68,2,Ri.numberOfFrames);
end
function obtainFaceLmks(Ri)
indx=1;
for i = Ri.startFrame;%:Ri.endFrame
imstr = [Ri.dataSrc,'\rgb_',num2str(i),'.png'];
[status,result] = system(['fitD -m src\my.amf -h src\haarcascade_frontalface_alt2.xml -i ',imstr,' -n 30']);
if(status==-1)
warning(result);
else
temp=flHelper(result(1:size(result,2)-59));
Ri.faceLmks(:,:,indx)=temp;
end
indx=indx+1;
end
return;
end
然后我会这样做:
ims = RGBimages('data\a01_s01_e01');
ims.obtainFaceLmks();
而且ims的属性(ims.faceLmks)似乎没有改变,为什么
感谢所有帮助这个类应该是继承来处理的,这样它就可以更改自己的值,否则它只是一个“值类”,只能通过返回一些东西来更改它的值。值类是按值传递的。因此,方法应该返回(更新的)类实例,您需要捕获该实例。换句话说,方法定义应该是
function Ri = obtainFaceLmks(Ri)
你可以调用这个方法
ims = ims.obtainFaceLmks();
句柄类通过引用传递。因此,方法不需要返回更新的类实例,也不需要捕获它。但是,您需要继承自句柄
,并且需要实现复制方法来复制类实例;分配给另一个变量将不起作用
有关更多信息,请参阅