このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。
この例では、System object™ を他の System object で構成して作成する方法を示します。この System object は 2 つの移動平均 System object を使用して、2 つの独立したサンプルの相互相関を求めます。移動平均 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
この例で、movingAverageFilter
System 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
確率変数を作成し、その移動平均の相互相関を計算してから、結果をステム プロットに表示します。
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