Documentation

This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

fdesign.differentiator

Differentiator filter specification object

Syntax

D = fdesign.differentiator
D = fdesign.differentiator(SPEC)
D = fdesign.differentiator(SPEC,specvalue1,specvalue2, ...)
D = fdesign.differentiator(specvalue1)
D = fdesign.differentiator(...,Fs)
D = fdesign.differentiator(...,MAGUNITS)

Description

D = fdesign.differentiator constructs a default differentiator filter designer D with the filter order set to 31.

D = fdesign.differentiator(SPEC) initializes the filter designer Specification property to SPEC. You provide one of the following filter entries as input to replace SPEC. These entries are not case sensitive.

  • 'N' — Full band differentiator (default)

  • 'N,Fp,Fst' — Partial band differentiator

The filter specifications are defined as follows:

  • Ap — amount of ripple allowed in the pass band in decibels (the default units). Also called Apass.

  • Ast — attenuation in the stop band in decibels (the default units). Also called Astop.

  • Fp — frequency at the start of the pass band. Specified in normalized frequency units. Also called Fpass.

  • Fst — frequency at the end of the stop band. Specified in normalized frequency units. Also called Fstop.

  • N — filter order.

By default, fdesign.differentiator assumes that all frequency specifications are provided in normalized frequency units. Also, decibels is the default for all magnitude specifications.

Use designopts to determine the design options for a given design method. Enter help(D,METHOD) at the MATLAB® command line to obtain detailed help on the design options for a given design method, METHOD.

D = fdesign.differentiator(SPEC,specvalue1,specvalue2, ...) initializes the filter designer specifications in SPEC with specvalue1, specvalue2, and so on. To get a description of the specifications specvalue1, specvalue2, and more, enter

get(d,'description')

at the Command prompt.

D = fdesign.differentiator(specvalue1) assumes the default specification N, setting the filter order to the value you provide.

D = fdesign.differentiator(...,Fs) adds the argument Fs, specified in Hz to define the sampling frequency to use. In this case, all frequencies in the specifications are in Hz as well.

D = fdesign.differentiator(...,MAGUNITS) specifies the units for any magnitude specification you provide in the input arguments. MAGUNITS can be one of

  • 'linear' — specify the magnitude in linear units

  • 'dB' — specify the magnitude in dB (decibels)

  • 'squared' — specify the magnitude in power units

When you omit the MAGUNITS argument, fdesign assumes that all magnitudes are in decibels. Note that fdesign stores all magnitude specifications in decibels (converting to decibels when necessary) regardless of how you specify the magnitudes.

Examples

collapse all

Use an FIR equiripple differentiator to transform frequency modulation into amplitude modulation, which can be detected using an envelope detector.

Modulate a message signal consisting of a 20 Hz sine wave with a 1 kHz carrier frequency. The sample rate is 10 kHz.

t = linspace(0,1,1e4);
x = cos(2*pi*20*t);
Fc = 1e3;
Fs = 1e4;
y = modulate(x,Fc,Fs,'fm');

Design the equiripple FIR differentiator of order 31.

d = fdesign.differentiator(31,Fs);
Hd = design(d,'equiripple');

Filter the modulated signal and use the hilbert function to obtain the envelope. Plot the envelope.

y1 = filter(Hd,y);
yh = hilbert(y1);

plot(t.*1000,abs(yh));
grid

xlabel('Milliseconds')
ylabel('Magnitude')
title('Envelope of the Demodulated Signal')

The envelope completes two cycles every 100 milliseconds. The envelope is oscillating at 20 Hz, which is the frequency of the message signal.

Design a 33rd-order FIR differentiator using least squares. Plot the zero-phase response of the filter.

d = fdesign.differentiator(33);
hd = design(d,'firls');

zerophase(hd)

Design a 54th-order narrowband equiripple differentiator. Differentiate the lowest 25% of the frequencies in the Nyquist range and filter the higher frequencies. Specify a sample rate of 20 kHz, a passband frequency of 2.5 kHz, and a stopband frequency of 3 kHz.

Fs = 20000;

d = fdesign.differentiator('N,Fp,Fst',54,2500,3000,Fs);
Hd = design(d,'equiripple');

Redesign the filter, but this time weight the stopband to increase the attenuation.

Hd1 = design(d,'equiripple','Wstop',4);

hfvt = fvtool(Hd,Hd1,'MagnitudeDisplay','zero-phase', ...
    'FrequencyRange','[0, Fs/2)');
legend(hfvt,'No stopband weighting','Stopband weighting');

See Also

|

Introduced in R2009a

Was this topic helpful?