我想了解Matlab如何使用数组对象。我已经阅读了几个帖子和Matlab对这个主题的帮助,但我仍然完全不了解它。
让我们来看一个用例:我想管理多个测量通道(通道数量可能会有所不同)。每个测量通道都是具有多个属性的对象。现在我想要一个处理通道的类(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
并使用以下命令访问它:
createChannels = channelHandler();
createChannels.addChannel('channel1');
createChannels.addChannel('channel2');
createChannels.channelArray(1).channelName
createChannels.channelArray(2).channelName
这会失败,因为channelArray未定义为数组,并且在访问channelArray(2)时会出错。 所以我也尝试初始化数组(但后来我需要知道通道的数量)。
所以我的问题是: a)我真的需要初始化一个对象数组吗? b)如何修复channelHandler类以将对象添加到数组中?
答案 0 :(得分:1)
问题是您没有继承from the handle
class and therefore the modifications made within addChannel
alter a copy of your object rather than the object itself。如果您继承自handle
,则已粘贴的代码将正常运行。
classdef channelHandler < handle