www.gusucode.com > dsp 案例源码程序 matlab代码 > dsp/LowpassFilterASinusoidSignalUsingFIRFilterObjectExample.m

    %% Lowpass Filter a Sinusoid Signal Using FIRFilter object
% Use an FIR filter to apply a low pass filter to a waveform with two 
% sinusoidal components.
 t = (0:1000)'/8e3;
 xin = sin(2*pi*0.3e3*t)+sin(2*pi*3e3*t);
 
 hSR = dsp.SignalSource;
 hSR.Signal = xin;
 hLog = dsp.SignalSink;

 hFIR = dsp.FIRFilter;
 hFIR.Numerator = fir1(10,0.5);

h = dsp.SpectrumAnalyzer('SampleRate',8e3,...
    'PlotAsTwoSidedSpectrum',false,...
    'OverlapPercent', 80, 'PowerUnits','dBW',...
    'YLimits', [-150 -10]);

 while ~isDone(hSR)
      input = hSR();
      filteredOutput = hFIR(input);
      hLog(filteredOutput);
      h(filteredOutput)
 end

 filteredResult = hLog.Buffer;
 fvtool(hFIR,'Fs',8000)
 
 %%
 % Design an FIR filter as a System object.
 N = 10;  
Fc = 0.4;
B = fir1(N,Fc);
Hf1 = dsp.FIRFilter('Numerator',B);
fvtool(Hf1)

%%
% This can also be achieved by using |fdesign| as a constructor and 
% |design| to design the filter.
N = 10;  
Fc = 0.4;
Hf = fdesign.lowpass('N,Fc',N,Fc);
D = design(Hf,'systemobject',true)
fvtool(D);