我在尝试使用点符号应用方法后引用对象属性时遇到了问题。只有当我尝试索引初始对象时才会出现这种情况。
classdef myclassexample
properties
data
end
methods
function obj = procData(obj)
if numel(obj)>1
for i = 1:numel(obj)
obj(i) = obj(i).procData;
end
return
end
%do some processing
obj.data = abs(obj.data);
end
end
end
然后分配以下内容
A = myclassexample;
A(1).data= - -1;
A(2).data = -2;
在调用整个数组并收集属性数据时,它可以正常工作。
[A.procData.data]
如果我尝试索引 A,那么我只会得到一个标量
[A([1 2]).procData.data]
尽管没有调用该属性,似乎也能正常运行。
B = A([1 2]).procData;
[B.data]
有什么想法吗?
A.procData.('data')
也返回一个标量。 - Mohsen Nosratinia[A.procData().data]
访问了非法的内存并可能导致段错误(Mac R2013a)。我认为返回值可能是缓冲区溢出的垃圾数据;有时返回[1,1],但有时却是[1,4e-309]或其他无意义的东西。简化情况下,也会在for循环内部处理中发生这种情况。这肯定是Mathworks的一个严重缺陷。 - mbauman