buttord — Select the minimum Butterworth filter order.
buttord(Wp, Ws, Rp, Rs) computes the minimum Butterworth filter order and natural cutoff Wn that satisfy passband ripple Rp and stopband attenuation Rs. Digital frequencies use MATLAB's normalized convention where 1 is Nyquist; add 's' for analog rad/s designs.
Syntax
[n, Wn] = buttord(Wp, Ws, Rp, Rs)
[n, Wn] = buttord(Wp, Ws, Rp, Rs, 's')Inputs
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
Wp | NumericArray | Yes | — | Passband edge or two-element passband edge vector. |
Ws | NumericArray | Yes | — | Stopband edge or two-element stopband edge vector. |
Rp | NumericScalar | Yes | — | Maximum passband ripple in dB. |
Rs | NumericScalar | Yes | — | Minimum stopband attenuation in dB. |
Wp | NumericArray | Yes | — | Analog passband edge or edge pair in rad/s. |
Ws | NumericArray | Yes | — | Analog stopband edge or edge pair in rad/s. |
s | StringScalar | Yes | — | Analog-design selector. |
Returns
| Name | Type | Description |
|---|---|---|
n | NumericScalar | Minimum Butterworth filter order. |
Wn | NumericArray | Natural cutoff frequency or frequency pair for butter. |
Returned values from buttord depend on how many outputs the caller requests.
Errors
| Identifier | When | Message |
|---|---|---|
RunMat:buttord:ArgCount | The argument count is outside supported forms. | buttord: expected buttord(Wp, Ws, Rp, Rs [, 's']) |
RunMat:buttord:InvalidFrequency | Passband or stopband edges are invalid. | buttord: invalid passband or stopband frequency |
RunMat:buttord:InvalidAttenuation | Ripple or attenuation values are invalid. | buttord: Rp and Rs must be positive finite scalars with Rs > Rp |
RunMat:buttord:InvalidOption | The optional selector is not supported. | buttord: optional selector must be 's' |
RunMat:buttord:Internal | Output tensor construction fails internally. | buttord: internal error |
How buttord works
[n, Wn] = buttord(Wp, Ws, Rp, Rs)returns an integer ordernand cutoffWnfor use withbutter(n, Wn).- Scalar
WpandWsselect lowpass whenWp < Wsand highpass whenWp > Ws. - Two-element edge vectors select bandpass when the stopband encloses the passband and bandstop when the passband encloses the stopband.
- Digital inputs must be finite, positive, and less than 1. Analog inputs must be finite and positive.
Rsmust be greater thanRp, and both values are specified in decibels.
Examples
Lowpass order selection
[n, Wn] = buttord(0.2, 0.3, 1, 40);
[b, a] = butter(n, Wn);Highpass order selection
[n, Wn] = buttord(0.5, 0.3, 1, 40);
[b, a] = butter(n, Wn, 'high');Bandpass order selection
[n, Wn] = buttord([0.3 0.5], [0.2 0.6], 1, 30);
[b, a] = butter(n, Wn, 'bandpass');Analog lowpass order selection
[n, Wn] = buttord(10, 20, 1, 40, 's');
[b, a] = butter(n, Wn, 's');Using buttord with coding agents
Open a RunMat example with live inputs, then ask the agent to explain how buttord changes the result.
Run a small buttord example, explain the result, then change one input and compare the output.
FAQ
What should I pass to butter after buttord?⌄
Pass the returned n and Wn directly. For scalar highpass designs, also pass 'high'; for two-element bandpass or bandstop designs, pass 'bandpass' or 'stop' to match the edge layout.
Does buttord run on the GPU?⌄
No. It only computes small order/cutoff parameters on the host. Those parameters can feed butter, and the resulting coefficients can later be used by GPU-capable filtering paths.
Related Math functions
Signal
blackman · butter · conv · conv2 · deconv · downsample · envelope · filter · filtfilt · fir1 · freqz · gauspuls · hamming · hann · hilbert · periodogram · pulstran · pwelch · rectpuls · sawtooth · sinc · spectrogram · square · tripuls · unwrap · upsample · zplane
Elementwise
abs · angle · complex · conj · double · exp · expm1 · factorial · gamma · heaviside · hypot · imag · ldivide · log · log10 · log1p · log2 · minus · nextpow2 · plus · pow2 · power · rdivide · real · sign · single · sqrt · times
Trigonometry
acos · acosh · asin · asinh · atan · atan2 · atanh · cos · cosd · cosh · deg2rad · rad2deg · sin · sind · sinh · tan · tand · tanh
Reduction
all · any · cummax · cummin · cumprod · cumsum · cumtrapz · diff · gradient · max · mean · median · min · nnz · prod · std · sum · trapz · var
Structure
Open-source implementation
Unlike proprietary runtimes, every RunMat function is open-source. Read exactly how buttord is executed, line by line, in Rust.
- View the source for buttord in Rust on GitHub
- Learn how the RunMat runtime works
- Found a bug? Open an issue with a minimal reproduction.
About RunMat
RunMat is an open-source runtime that executes MATLAB-syntax code blazing on any GPU. It is licensed under the Apache 2.0 license.
- RunMat automatically optimizes your math for GPU execution on Apple, Nvidia, and AMD hardware. No code changes needed. Simulations that took hours now take minutes.
- Start running code in seconds. RunMat runs in the browser, on the desktop, or from the CLI. No license server, no IT ticket.