我想了解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