capture
Capture RF signal data using SDR device
Add-On Required: This feature requires the Communications Toolbox Support Package for Analog Devices ADALM-Pluto Radio add-on.
Syntax
Description
[___] = capture(___,'Filename',
specifies options using one or more name-value pair arguments. For example,
filename
,Name,Value
)'UserMetadata',moreInfo
adds the moreInfo
structure
defined in the workspace to the mdata
output. Specify name-value pair
arguments after all other input arguments.
Examples
Capture RF Data to Baseband File Using ADALM-PLUTO Radio
Use the capture
function and an ADALM-PLUTO radio to record RF signals for post-capture processing in MATLAB®. Save an FM broadcast signal to a file as baseband samples. Read the file containing the recorded signal and demodulate the baseband samples.
Configure SDR Hardware
To configure your ADALM-PLUTO radio for host-radio communication, see Guided Host-Radio Hardware Setup.
Attach an antenna suitable for the 88-108 MHz band to the first RX channel. The FM radio band is outside the default tuning range for the ADALM-PLUTO radio. The configurePlutoRadio
function enables you to extend the frequency range and use your ADALM-PLUTO radio outside the qualified tuning range. The extended frequency range includes the full FM radio band.
configurePlutoRadio('AD9364');
## Establishing connection to hardware. This process can take several seconds.
Configure Receiver System Object
Create an SDR receiver System object with the specified properties. The specified center frequency corresponds to a local FM station.
deviceName = 'Pluto'; samplerate = 528e3; fmStationFrequency = 88.9e6; % Adjust to select an FM station nearby rx = sdrrx(deviceName,'BasebandSampleRate',samplerate, ... 'CenterFrequency',fmStationFrequency,'OutputDataType','double');
Initiate Data Capture to File
Call the capture
function, specifying the receiver object, capture duration, and file name. After capturing the FM signal, unlock the receiver object using the release
function.
capture(rx,5,'Seconds','Filename','FMRecording.bb');
## Establishing connection to hardware. This process can take several seconds.
release(rx);
Demodulate FM Recording
Create a comm.BasebandFileReader
System object to read the captured signal and extract frames of data from the file. Set baseband file reader to take 4400 samples per frame when reading the saved baseband signal.
bbr = comm.BasebandFileReader('FMRecording.bb');
bbr.SamplesPerFrame = 4400;
Use the BasebandSampleRate
field of the baseband file reader object to set the SampleRate
property of the demodulator. Find the BasebandSampleRate
field in the MetaData
structure. Create a comm.FMBroadcastDemodulator
System object. Demodulate and play back each frame of the FM data. Use a while
loop to read all frames of the captured data.
fmbDemod = comm.FMBroadcastDemodulator('AudioSampleRate',48e3, ... 'SampleRate',bbr.Metadata.BasebandSampleRate,'PlaySound',true); while ~isDone(bbr) fmbDemod(bbr()); end
Input Arguments
rxsdr
— Software-defined radio receiver
comm.SDRRxPluto System object
Software-defined radio receiver, specified as a comm.SDRRxPluto
System object. The function uses this object to communicate with the SDR device
connected to the host computer.
length
— Capture duration
scalar
Capture duration, specified as a scalar. The input argument
unit
specifies the unit of length
. The
default unit is samples of data. The number of samples to capture must be in the range
[1, 16,777,216]. Use the 'EnableOversizeCapture
' name-value pair to
remove the limit on the maximum number of samples to capture. However, this does not
guarantee data contiguity.
Data Types: double
unit
— Capture duration unit
'Samples'
(default) | 'Seconds'
Capture duration unit, specified as:
filename
— File name for captured data
character vector | string scalar
File name for the captured data, specified as a character vector or string scalar.
The function saves the captured data. To read this file, use the comm.BasebandFileReader
System object. The saved file has the file name extension .bb
.
Example: 'rxdata'
or 'rxdata.bb'
configures the
function to save data to a file named rxdata.bb
.
Data Types: char
| string
Name-Value Arguments
Specify optional pairs of arguments as
Name1=Value1,...,NameN=ValueN
, where Name
is
the argument name and Value
is the corresponding value.
Name-value arguments must appear after other arguments, but the order of the
pairs does not matter.
Before R2021a, use commas to separate each name and value, and enclose
Name
in quotes.
Example: [data,mdata,fn] =
capture(rxsdr,5,'Filename','RFCapture','Timestamp',true)
Timestamp
— Append capture time stamp to saved file name
false
(default) | true
Append a capture time stamp to the saved file name, specified as the comma
separated pair consisting of 'Timestamp
' and
false
or true
.
When you specify
false
, no timestamp is appended to the saved file name.When you specify
true
, the name of the created file takes the form <filename>_<Year>-<Month>-<Day>_<Hour>-<Minute>-<Second>-<Millisecond>.bb
and indicates when the data was captured.
Data Types: logical
UserMetadata
— User data
structure
User data, specified as the comma separated pair consisting of
'UserMetadata
' and a single-level structure of data that is added
to the mdata
structure output. By default there is no user data
structure included in mdata
.
Data Types: struct
EnableOversizeCapture
— Remove limit on capture duration
false
(default) | true
Remove limit on capture duration, specified as the comma separated pair consisting
of 'EnableOversizeCapture
' and false
or
true
. When you specify true
, the function
removes the limit on the number of samples and data contiguity is not
guaranteed.
Data Types: logical
Output Arguments
data
— Received data
vector of complex values
Received data, returned as a vector of complex values. The value range depends on the data type of the output.
int16
— Output data consists of 16-bit signed integer values in the range [–2048, 2047]. The AD936X RF chip has a 12-bit ADC. The 12-bit data from the ADC is stored in the lower 12 bits of the output value and sign-extended to 16 bits.double
— Output data consists of double-precision floating point values scaled to the range of [–1, 1].single
— Output data consists of single-precision floating point values scaled to the range of [–1, 1].
Note
The AD936X RF chip has a 12-bit ADC. Double-precision and single-precision floating
point representations of received data values are directly created from the
sign-extended int16
value received from the board. These
representations occupy only the range [–1, 1].
The rxsdr
object specifies the data type of the received data
with the OutputDataType
property.
Data Types: int16
| single
| double
Complex Number Support: Yes
mdata
— Capture-time configuration settings for SDR device
structure
Capture-time configuration settings for the SDR device, returned as a structure that contains these fields:
Field | Description |
---|---|
Date | Date of the data capture. |
BasebandSampleRate | Baseband sample rate, in Hz, configured in the SDR device. |
CenterFrequency | Center frequency, in Hz, configured in the SDR device. |
DeviceName | Name of the SDR device. |
ChannelMapping | Channel mapping value configured in the SDR device. Channel mapping is always 1. |
CaptureLengthSamples | Capture length in samples. |
CaptureLengthSeconds | Capture length in seconds. |
SDRReceiverConfiguration | Character vector list of property values and settings that describe the System object state. |
GainSource | Gain source value configured in the SDR device. |
DataContiguity |
|
DiscontiguityIndices | Vector of indices into the output data . This field
only applies when the DataContiguity field is
0 . Each index indicates that on or after the
corresponding data sample a discontiguity occurs. |
UserMetaData | Additional structure containing user-defined information included as an
input to the capture function. |
Data Types: struct
fn
— File name of captured data
character vector
File name of captured data, returned as a character vector.
Data Types: char
Version History
Introduced in R2019b
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)