我想了解Matlab如何与数组对象一起工作。我已经阅读了几篇文章和关于这个主题的Matlab帮助,但我仍然不完全理解它。Matlab OOP对象类数组
让我们来看一个用例:我想管理几个测量通道(通道数量可能会有所不同)。每个测量通道都是具有多个属性的对象。现在我想要有一个类处理频道(channelHandler.m)。在这个类中,我可以简单地向数组添加一个新通道(稍后可能会有一些功能)。
所以我试过到目前为止:
1)创建measurementChannel.m类 在我只设置通道名称至今没有数据的构造。
classdef measurementChannel
%CHANNEL holds an instance of a single channel
properties
channelData
channelName = strings
channelUnit = strings
channelDataLength
channelOriginMeasurementFile
end
methods
function obj = channelTest(channelName)
if nargin > 0
obj.channelName = channelName;
end
end
end
末
为了检验这一类我尝试这样做:
channel(1) = measurementChannel('channelA');
channel(2) = measurementChannel('channelB');
channel(1).channelName
channel(2).channelName
这是运作良好。
2)现在,我已经创建了的ChannelHandler类:
classdef channelHandler
properties (Access = public)
channelArray
end
methods (Access = public)
function addChannel(obj, Name)
testobj = measurementChannel();
testobj.channelName = Name;
obj.channelArray = [obj.channelArray testobj];
end
end
,并通过使用下面的命令访问此:因为channelArray未并且被定义为一个阵列将
createChannels = channelHandler();
createChannels.addChannel('channel1');
createChannels.addChannel('channel2');
createChannels.channelArray(1).channelName
createChannels.channelArray(2).channelName
失败访问channelArray(2)时发生错误。 所以我也尝试初始化数组(但我需要知道通道的数量)。
所以我的问题是: a)我真的需要初始化一个对象数组吗? b)我如何修复channelHandler类以将对象添加到数组中?
感谢您的帮助 - 解决了这个问题。 – Christoph
只是为了我的理解:如果我使用句柄类,只有对该对象的引用存储在channelArray中。为什么不能将数据本身存储在channelArray中? – Christoph
@Christoph引用存储在数组中,但这与存储在'channelArray'中的数据本身实际上是一样的。所有这一切意味着,如果将它分配给一个不同的变量并对其进行修改,那么这种变化将反映在原始对象中。 – Suever