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.

To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.

Arbitrary response magnitude and phase filter specification object

`d = fdesign.arbmagnphase`

d = fdesign.arbmagnphase(specification)

d = fdesign.arbmagnphase(specification,specvalue1,specvalue2,...)

d = fdesign.arbmagnphase(specvalue1,specvalue2,specvalue3)

d = fdesign.arbmagnphase(...,fs)

`d = fdesign.arbmagnphase`

constructs
an arbitrary magnitude filter specification object `d`

.

`d = fdesign.arbmagnphase(specification)`

initializes
the `Specification`

property for specifications
object `d`

to `specification`

. The
input argument `specification`

must be one of the
choices shown in the following table. Specification options are not
case sensitive.

Specification | Description of Resulting Filter |
---|---|

| Single band design (default). FIR and IIR ( |

| FIR multiband design where |

| IIR single band design. |

The following table describes the specification arguments.

Argument | Description |
---|---|

| Number of bands in the multiband filter. |

| Frequency vector. Frequency values specified in |

| Complex frequency response values. |

| Filter order for FIR filters and the numerator and denominator
orders for IIR filters (when not specified by |

| Numerator order for IIR filters. |

| Denominator order for IIR filter designs. |

By default, this method assumes that all frequency specifications are supplied in normalized frequency.

`f`

and `h`

are the input
arguments you use to define the filter response desired. Each frequency
value you specify in `f`

must have a corresponding
response value in `h`

. This example creates a filter
with two passbands (`b`

= `4`

) and shows how `f`

and `h`

are
related. This example is for illustration only. It is not an actual
filter.

Define the frequency vector `f`

as ```
[0
0.1 0.2 0.4 0.5 0.6 0.9 1.0]
```

Define the response vector `h`

as ```
[0
0.5 0.5 0.1 0.1 0.8 0.8 0]
```

These specifications connect`f`

and `h`

as
shown in the following table.

f (Normalized Frequency) | h (Response Desired at f) |
---|---|

0 | 0 |

0.1 | 0.5 |

0.2 | 0.5 |

0.4 | 0.1 |

0.5 | 0.1 |

0.6 | 0.8 |

0.9 | 0.8 |

1.0 | 0.0 |

A response with two passbands—one roughly between 0.1
and 0.2 and the second between 0.6 and 0.9—results from the
mapping between `f`

and `h`

. Plotting `f`

and `h`

yields
the following figure that resembles a filter with two passbands.

The second example in Examples shows this plot in more detail
with a complex filter response for `h`

. In the example, `h`

uses
complex values for the response.

Different specification types often have different design methods
available. Use `designmethods`

`(d)`

to
get a list of design methods available for a given specification option
and specifications object.

`d = fdesign.arbmagnphase(specification,specvalue1,specvalue2,...)`

initializes
the filter specification object with `specvalue1`

, `specvalue2`

,
and so on. Use `get(d,'description')`

for descriptions
of the various specifications `specvalue1`

, `specvalue2`

,
...`spec`

* n*.

`d = fdesign.arbmagnphase(specvalue1,specvalue2,specvalue3)`

uses
the default specification option `n,f,h`

, setting
the filter order, filter frequency vector, and the complex frequency
response vector to the values `specvalue1`

, `specvalue2`

,
and `specvalue3`

.

`d = fdesign.arbmagnphase(...,fs)`

specifies
the sampling frequency in Hz. All other frequency specifications are
also assumed to be in Hz when you specify `fs`

.

Use `fdesign.arbmagnphase`

to model a complex
analog filter:

d=fdesign.arbmagnphase('n,f,h',100); % N=100, f and h set to defaults. design(d,'freqsamp');

For a more complex example, design a bandpass filter with low
group delay by specifying the desired delay and using `f`

and `h`

to
define the filter bands.

n = 50; % Group delay of a linear phase filter would be 25. gd = 12; % Set the desired group delay for the filter. f1=linspace(0,.25,30); % Define the first stopband frequencies. f2=linspace(.3,.56,40);% Define the passband frequencies. f3=linspace(.62,1,30); % Define the second stopband frequencies. h1 = zeros(size(f1)); % Specify the filter response at the freqs in f1. h2 = exp(-1j*pi*gd*f2); % Specify the filter response at the freqs in f2. h3 = zeros(size(f3)); % Specify the response at the freqs in f3. d=fdesign.arbmagnphase('n,b,f,h',50,3,f1,h1,f2,h2,f3,h3); D = design(d,'equiripple'); fvtool(D,'Analysis','freq');

`design`

| `designmethods`

| `fdesign`

| `setspecs`

Was this topic helpful?