Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

複合 System object の作成

この例では、System object™ を他の System object で構成して作成する方法を示します。この System object は 2 つの移動平均 System object を使用して、2 つの独立したサンプルの相互相関を求めます。移動平均 System object の作成の例で、System object の作成方法を詳細に説明しています。この例では、System object を他の System object の内部で使用する方法に重点を置いています。

プライベート プロパティとしての System object

ある System object の複数のインスタンスを作成して、それぞれのインスタンスに各自の状態の管理を任せられることが、関数よりも System object を使用する最大のメリットの 1 つです。プライベート プロパティ移动AverageFilter1および移动AverageFilter2は、2 つの移動平均フィルター オブジェクトの格納に使用されます。

properties (Access=private)% This example class contains two moving average filters (more can be added% in the same way)移动AverageFilter1 MovingAverageFilter2end

移動平均フィルターの設定

setupImplメソッド内で、2 つの移動平均 System object を作成し、それらのパブリック プロパティを初期化します。

functionsetupImpl(obj,~)% Set up moving average objects with default valuesobj.MovingAverageFilter1 = movingAverageFilter('WindowLength',obj.WindowLength1); obj.MovingAverageFilter2 = movingAverageFilter('WindowLength',obj.WindowLength2);end

依存プロパティの操作

この例で、movingAverageFilterSystem object のパブリック プロパティWindowLength"依存" プロパティとして実装されています。

properties(Nontunable,Dependent)% WindowLength Moving window lengthWindowLength1; WindowLength2;end

いずれかの依存プロパティに値を代入すると、対応する移動平均フィルターでその値が設定されます。いずれかの依存プロパティを読み取る場合、その値は対応する移動平均フィルターから読み取られます。

functionset.WindowLength1(obj,WindowLength1)% Set the window length of one moving average filterobj.MovingAverageFilter1.WindowLength = WindowLength1;endfunctionWindowLength = get.WindowLength1(obj)% Read window length from one of the moving average filtersWindowLength = obj.MovingAverageFilter1.WindowLength;endfunctionset.WindowLength2(obj,WindowLength2)% Set the window length of one moving average filterobj.MovingAverageFilter2.WindowLength = WindowLength2;endfunctionWindowLength = get.WindowLength2(obj)% Read window length from one of the moving average filtersWindowLength = obj.MovingAverageFilter2.WindowLength;end

MATLAB での相互相関オブジェクトの使用

確率変数を作成し、その移動平均の相互相関を計算してから、結果をステム プロットに表示します。

x = rand(20,1); y = rand(20,1); crossCorr = crossCorrelationMovingAverages('WindowLength1',1,'WindowLength2',5);foriter = 1:100 x = rand(20,1); y = rand(20,1); [corr,lags] = crossCorr(x,y); stem(lags,corr)end

Figure contains an axes. The axes contains an object of type stem.