В этом примере показано, как определить системные объекты, включающие другие системные объекты. Определите полосовой фильтр System object™ из отдельных объектов high pass и lowpass filter System.
Полный файл определения класса составного системного объекта полосового фильтра
Файл определения класса для компонента FIR нижних частот полосового фильтра
Файл определения класса для компонента Highpass FIR полосового фильтра
Чтобы определить системный объект из других системных объектов, сохраните эти другие объекты в файле определения класса в качестве свойств. В этом примере фильтры верхних и нижних частот являются отдельными системными объектами, определенными в их собственных файлах определения классов.
properties (Access = private) % Properties that hold filter System objects pLowpass pHighpass end
classdef BandpassFIRFilter < matlab.System % Implements a bandpass filter using a cascade of eighth-order lowpass % and eighth-order highpass FIR filters. properties (Access = private) % Properties that hold filter System objects pLowpass pHighpass end methods (Access = protected) function setupImpl(obj) % Setup composite object from constituent objects obj.pLowpass = LowpassFIRFilter; obj.pHighpass = HighpassFIRFilter; end function yHigh = stepImpl(obj,u) yLow = obj.pLowpass(u); yHigh = obj.pHighpass(yLow); end function resetImpl(obj) reset(obj.pLowpass); reset(obj.pHighpass); end end end
classdef LowpassFIRFilter < matlab.System % Implements eighth-order lowpass FIR filter with 0.6pi cutoff properties (Nontunable) % Filter coefficients Numerator = [0.006,-0.0133,-0.05,0.26,0.6,0.26,-0.05,-0.0133,0.006]; end properties (DiscreteState) State end methods (Access = protected) function setupImpl(obj) obj.State = zeros(length(obj.Numerator)-1,1); end function y = stepImpl(obj,u) [y,obj.State] = filter(obj.Numerator,1,u,obj.State); end function resetImpl(obj) obj.State = zeros(length(obj.Numerator)-1,1); end end end
classdef HighpassFIRFilter < matlab.System % Implements eighth-order highpass FIR filter with 0.4pi cutoff properties (Nontunable) % Filter coefficients Numerator = [0.006,0.0133,-0.05,-0.26,0.6,-0.26,-0.05,0.0133,0.006]; end properties (DiscreteState) State end methods (Access = protected) function setupImpl(obj) obj.State = zeros(length(obj.Numerator)-1,1); end function y = stepImpl(obj,u) [y,obj.State] = filter(obj.Numerator,1,u,obj.State); end function resetImpl(obj) obj.State = zeros(length(obj.Numerator)-1,1); end end end