You are viewing an Archived item in your Knowledge Base, it is not publicly accessible.

US English (US)
JP Japanese
CN Chinese
KR Korean

Contact Us

If you still have questions or prefer to get help directly from an agent, please submit a request.
We’ll get back to you as soon as possible.

Please fill out the contact form below and we will reply as soon as possible.

  • Knowledge Base Home
  • Contact Us
English (US)
US English (US)
JP Japanese
CN Chinese
KR Korean
  • Home
  • MATLAB API

MATLAB: IIR Filter Box

Written by Paul Cracknell

Updated at February 21st, 2025

Contact Us

If you still have questions or prefer to get help directly from an agent, please submit a request.
We’ll get back to you as soon as possible.

Please fill out the contact form below and we will reply as soon as possible.

  • Moku:Go
    Moku:Go General Moku:Go Arbitrary Waveform Generator Moku:Go Data Logger Moku:Go Digital Filter Box Moku:Go FIR Filter Builder Moku:Go Frequency Response Analyzer Moku:Go Logic Analyzer & Pattern Generator Moku:Go Oscilloscope & Voltmeter Moku:Go PID Controller Moku:Go Spectrum Analyzer Moku:Go Waveform Generator Moku:Go Power Supplies Moku:Go Lock-in Amplifier Moku:Go Time & Frequency Analyzer Moku:Go Laser Lock Box Moku:Go Phasemeter
  • Moku:Lab
    Moku:Lab General Moku:Lab Arbitrary Waveform Generator Moku:Lab Data Logger Moku:Lab Digital Filter Box Moku:Lab FIR Filter Builder Moku:Lab Frequency Response Analyzer Moku:Lab Laser Lock Box Moku:Lab Lock-in Amplifier Moku:Lab Oscilloscope Moku:Lab Phasemeter Moku:Lab PID Controller Moku:Lab Spectrum Analyzer Moku:Lab Time & Frequency Analyzer Moku:Lab Waveform Generator Moku:Lab Logic Analyzer/Pattern Generator
  • Moku:Pro
    Moku:Pro General Moku:Pro Arbitrary Waveform Generator Moku:Pro Data Logger Moku:Pro Frequency Response Analyzer Moku:Pro Oscilloscope Moku:Pro PID Controller Moku:Pro Spectrum Analyzer Moku:Pro Waveform Generator Moku:Pro Lock-in Amplifier Moku:Pro Laser Lock Box Moku:Pro Digital Filter Box Moku:Pro FIR Filter Builder Moku:Pro Phasemeter Moku:Pro Multi-instrument Mode Moku:Pro Logic Analyzer/Pattern Generator Moku:Pro Time & Frequency Analyzer
  • Python API
  • MATLAB API
  • Arbitrary Waveform Generator
  • Data Logger
  • Digital Filter Box
  • FIR Filter Builder
  • Frequency Response Analyzer
  • Laser Lock Box
  • Lock-in Amplifier
  • Oscilloscope
  • Phasemeter
  • PID Controller
  • Spectrum Analyzer
  • Time & Frequency Analyzer
  • Waveform Generator
  • Logic Analyzer & Pattern Generator
  • Multi Instrument Mode
  • Moku Cloud Compile
  • Moku general
  • LabVIEW
+ More

Example MATLAB script to implement the IIR Filter Box (basic).

%% Basic IIR Filter Box
%
% This example demonstrates how you can generate Chebyshev filter
% coefficients to configure the IIR Filter Box. It also shows how to
% retrieve signal monitor data.
%
% NOTE: This example requires installation of the MATLAB Signal Processing 
% Toolbox to generate filter coefficients. The MokuIIRFilterBox can 
% be used directly with pre-defined coefficients.
%
% (c) 2017 Liquid Instruments Pty. Ltd.
%
%% Prepare the SOS filter coefficients
% Generate a Chebyshev filter transfer function
N = 4; % Order
R = 0.5; % Passband peak-to-peak ripple (dB)
Wp = 0.1; % Passband-edge frequency (% Nyquist sample rate)
[B,A] = cheby1(N,R,Wp);

% Moku:Lab implements a Second-Order-Stage (SOS) filter, so we need to
% transform the filter transfer function coefficients to SOS format.
[sos,g] = tf2sos(B,A);

% Mould the coefficients into the Moku:Lab "matrix" format. 
% Ensure "g" is a cell (not a single-element array). The remaining elements
% are 1x6 numeric arrays. 
filt_coeff = {{ {g}, ... % Overall gain
sos(1,[4,1:3,5,6]), ... % [s_1, b_01, b_11, b_21, a_11, a_21]
sos(2,[4,1:3,5,6]), ... % [s_2, b_02, b_12, b_22, a_12, a_22]
[1,1,0,0,0,0], ... % Ignore this stage (all-pass)
[1,1,0,0,0,0] }} ; % Ignore this stage (all-pass)

%% Connect to your Moku
ip = input('Please enter your Moku:Lab IP address: ', 's');

% Connect to your Moku and deploy the desired instrument
m = MokuIIRFilterBox(ip);

%% Configure the instrument
m.set_frontend(1, 'fiftyr', 'true', 'atten', 'false', 'ac', 'false');
m.set_frontend(2, 'fiftyr', 'true', 'atten', 'false', 'ac', 'false');

% Both filters have the same coefficients, but the different sampling rates
% mean the resultant transfer functions will be different by a factor of
% 128 (the ratio of sampling rates).
m.set_filter(1, 'high', filt_coeff); % ~15.625 Smp/s
m.set_filter(2, 'low', filt_coeff); % ~122 Smp/s

% 0.1V Offset for Channel 1
% Channel 2 acts on the sum of Input 1 and Input 2
m.set_gains_offsets(1, 'output_offset', 0.1);
m.set_control_matrix(2, 0.5, 0.5);

% Set up monitoring of the input and output of the second filter channel.
m.set_monitor('a','in1');
m.set_monitor('b','out1');

% Set up the monitor timebase to be +-1usec
m.set_timebase(-1e-6,1e-6);

% Capture and print the time-domain signals being monitored
data = m.get_data();
data.time
data.ch1
data.ch2
filter matlab

Was this article helpful?

Yes
No
Give feedback about this article

Related Articles

  • MATLAB Data Logger and saving the logfile
  • Where can I find the documentation for MATLAB APIs?
  • Getting started using MATLAB
  • Can I control more than one Moku device within the same MATLAB script?
  • How can I import a .CSV file from Moku:Lab’s Data Logger into MATLAB?

Sitemap

  • Moku:Lab
  • Instruments
  • Software
  • Company
  • Support
  • Store
  • Terms & Conditions
  • Privacy Policy

Offices

United States
+1 (619) 332-6230
12526 High Bluff Dr
Suite 150
San Diego, CA 92130

Australia
+61 2 6171 9730
243 Northbourne Avenue
Suite 2
Lyneham, ACT 2602

Australia
+61 03 7073 3594
700 Swanston Street
Suite 5E, Level 5
Carlton, VIC 3053

Follow us

Youtube LinkedIn

官方微信

Contact us
© 2025 Liquid Instruments. All rights reserved.

Knowledge Base Software powered by Helpjuice

Definition by Author

0
0
Expand