我有一个简单的数据加载类:
Message
加载数据后,我可以看到该对象报告数据在以下位置:
classdef DataLoader
properties
data;
end
methods
function obj = loadData(obj, file)
obj.data = csvread(file);
end
end
end
但是,当我访问数据时:
s = DataLoader();
s.loadData('data.csv')
ans =
DataLoader with properties:
data: [8738102×8 double]
此外,在此访问权限之后:
s.data
ans =
[]
编辑:所以我已经解决了我的问题:
s =
DataLoader with properties:
data: []
但是有一种方法可以做到:
s = s.loadData('data.csv');
答案 0 :(得分:2)
您已经发现,由于类是value class,因此必须用loadData
返回的新对象覆盖旧对象。如果您希望对象具有类似引用的行为,则需要从handle class继承。这是新班级代码的样子:
classdef DataLoader < handle % Inherit from handle class
properties
data;
end
methods
function loadData(obj, file) % No need to return output now
obj.data = csvread(file);
end
end
end
现在您可以使用以下语法:
s.loadData('data.csv');