主要内容

comm.SDRRTLReceiver

从RTL-SDR设备接收数据

描述

comm.SDRRTLReceiver系统对象™支持MATLAB之间金宝app的通信®和一个RTL-SDR装置,使模拟和开发各种软件定义无线电(SDR)应用程序。虽然comm.SDRRTLReceiver从一个RTL-SDR装置接收数据,对象作为信号源输出一个列向量固定长度的信号。

从RTL-SDR设备接收数据:

  1. 创建comm.SDRRTLReceiver对象并设置其属性。

  2. 就好像它是一个函数调用对象。

了解更多关于系统对象是如何工作的,看到的系统对象是什么?

创建

描述

处方= comm.SDRRTLReceiver创建一个默认RTL-SDR接收机系统对象。

例子

处方= comm.SDRRTLReceiver (RadioAddress)设置RadioAddress财产的USB地址连接RTL-SDR设备。

例子

处方= comm.SDRRTLReceiver (___,名称,值)属性使用一个或多个名称参数除了任何争论组合在以前的语法。例如,“CenterFrequency”, 88.9 e6指定一个中心频率为88.9 MHz。

属性

全部展开

属性,除非另有注明nontunable后,这意味着你不能改变它们的值调用对象。对象锁当你叫他们,释放函数打开它们。

如果一个属性可调在任何时候,你可以改变它的值。

改变属性值的更多信息,请参阅系统设计在MATLAB使用系统对象

USB地址的RTL-SDR设备你想沟通,指定为一个特征向量代表一个非负整数或字符串标量。发现哪些无线电连接到你的电脑,使用sdrinfo函数。

USB端口地址分配

USB端口地址的分配可以违反直觉。如果一个RTL-SDR装置插入第一个USB接口,它是在地址0。然而,如果一个RTL-SDR装置插入任何港口后第一个,地址变化取决于设备插入任何之前的港口。此图显示了USB端口地址被分配当设备被添加,然后删除第一,先出(FIFO)秩序。

USB端口地址分配多个无线电以先进先出的方式完成。

此图显示了USB端口地址被分配当设备被添加,然后删除从端口0。广播地址第二RTL-SDR设备变化基于第一个端口是否RTL-SDR设备。访问一个无线电与正确的广播讲话中,你必须跟踪内部设备的订单。

USB端口地址分配多个无线电。访问一个无线电与正确的广播讲话中,你必须跟踪内部设备的订单。

数据类型:字符

中心频率在赫兹,指定为一个积极的标量。这个属性的有效范围取决于RTL-SDR调谐器芯片的设备。调谐器芯片的列表和他们的频率范围,明白了[1]

可调:是的

数据类型:

启用自动增益控制(AGC)的调谐器,指定为一个数字或逻辑值。

  • 0()- - -关闭自动增益控制。

  • 1(真正的)- - -打开自动增益控制。

可调:是的

数据类型:逻辑|数字

调谐器增益在dB,指定为一个标量。这个属性的有效范围取决于RTL-SDR调谐器芯片的设备。得到有效的增益值,使用信息函数。

可调:是的

依赖关系

要启用这个特性,设置EnableTunerAGC财产

数据类型:

模拟-数字转换器(ADC)采样率在赫兹,指定为一个积极的标量。样本率的有效范围(225、300)kHz和千赫(900、3200)。如果你设置SampleRate属性大于2560 kHz,您可以观察了样品。更多信息的最大可靠的采样率,明白了[1]

数据类型:

指定的输出,数据类型作为其中一个值。

  • “双”“单一”——复杂的值按比例缩小的范围[1]。

  • “int16”——复杂的值是原始的16位正交(I和Q)样本RTL-SDR设备。

数据类型:字符|字符串

样品每帧的数量,指定为一个正整数。

数据类型:

频率校正在ppm,指定为一个整数从1 e4 1 e4。这个属性值修正的频移接收的数据由于本地振荡频率偏移或时钟频率不准确。

可调:是的

数据类型:

选择破裂模式,指定为一个数字或逻辑值。

  • 0()——禁用破裂模式。

  • 1(真正的)——使破裂模式。产生一组连续的帧没有溢出到RTL-SDR设备,设置该属性真正的。使破裂模式可以帮助您无法实时运行的模拟模型。当你启用破裂模式,指定所需的使用的连续数据量NumFramesInBurst财产和SamplesPerFrame财产。

数据类型:逻辑|数字

在一个连续的帧数破灭,指定为一个正整数。

依赖关系

要启用这个特性,设置EnableBurstMode财产真正的

数据类型:

使用

描述

输出= rx ()接收数据从一个RTL-SDR设备相关comm.SDRRTLReceiver系统对象,处方

(输出,len]= rx ()返回len,这表明对象是否接收来自RTL-SDR有效数据的设备。

例子

(输出,len,失去了]= rx ()返回失去了,这表明了样本的数量。

例子

(输出,len,失去了,晚些时候]= rx ()同样的回报晚些时候,这表明延迟的接收的数据帧。

输出参数

全部展开

接收的数据从一个RTL-SDR设备,作为其中一个返回值。

  • 列向量的复杂int16价值观——复杂值原始16位I和Q RTL-SDR设备样本。

  • 复杂单精确值的列向量,复杂的值按比例缩小的范围[1]。

  • 列向量复杂的双精度值的复杂的值按比例缩小的范围[1]。

指定基类型,使用OutputDataType财产。

数据类型:int16||
复数的支持:金宝app是的

数量的有效样本,作为一个非负整数返回。当RTL-SDR设备返回没有有效的样本,len0

失去了样本,作为一个非负整数返回。当RTL-SDR设备报告没有样品丢失,失去了0。如果你的模型实时运行,失去了0。您可以使用该输出值作为诊断工具来确定对象的实时执行。实时操作的更多信息,参见实时操作

延迟的接收的数据帧,返回一个非负整数。当接收到的帧的数据没有延迟,晚些时候小于或等于什么1。即使你的模型实时运行,可以体验延迟收到信号。您可以使用该输出值作为诊断工具来确定对象的实时执行。实时操作的更多信息,参见实时操作

对象的功能

使用一个目标函数,指定系统对象作为第一个输入参数。例如,释放系统资源的系统对象命名obj使用这个语法:

发行版(obj)

全部展开

信息 RTL-SDR设备的特征信息
一步 运行系统对象算法
释放 释放资源,并允许修改系统对象属性值和输入特征
重置 重置的内部状态系统对象

例子

全部折叠

从一个RTL-SDR设备接收流媒体数据。

创建并初始化一个RTL-SDR接收器对象。检查对象属性。

rxsdr = comm.SDRRTLReceiver (' 0 ',“CenterFrequency”,88.9 e6,“SampleRate”,250000,“SamplesPerFrame”,2048,“EnableTunerAGC”,真的,“OutputDataType”,“双”)
rxsdr = comm.SDRRTLReceiver属性:RadioAddress: ' 0 ' CenterFrequency: 88900000 EnableTunerAGC:真正的SampleRate: 250000 OutputDataType:“双”SamplesPerFrame: 2048 FrequencyCorrection: 0 EnableBurstMode:假的
radioInfo = info (rxsdr)
radioInfo =以下值显示无线设置,而不是RTL-SDR接收机系统对象的属性值。更多的信息,“帮助comm.SDRRTLReceiver”类型。RadioName:“通用RTL2832U OEM”RadioAddress: ' 0 ' TunerName:‘R820T制造商:瑞昱的产品:“RTL2838UHIDIR”GainValues: [0 0.9000 1.4000 2.7000 3.7000 7.7000 8.7000 12.5000 14.4000 15.7000 16.6000 19.7000 20.7000 22.9000 25.4000 28 29.7000 32.8000 33.8000 36.4000 37.2000 38.6000 40.2000 49.6000 42.1000 43.4000 43.9000 44.5000 48] RTLCrystalFrequency: 28800000 TunerCrystalFrequency: 28800000 SamplingMode:“正交”OffsetTuning:“禁用”CenterFrequency: 88900000 SampleRate: 250000 FrequencyCorrection: 0

流数据的设备。释放对象完成后使用它。

p = 1:1000 rxdata = rxsdr ();结束发行版(rxsdr)

接收流媒体数据从一个RTL-SDR装置在一个频率变化的频率和流更多的数据从设备。

创建并初始化一个RTL-SDR接收器对象。检查对象属性。

rxsdr = comm.SDRRTLReceiver (' 0 ',“CenterFrequency”,88.9 e6,“SampleRate”,250000,“SamplesPerFrame”,2048,“EnableTunerAGC”,真的,“OutputDataType”,“双”)
rxsdr = comm.SDRRTLReceiver属性:RadioAddress: ' 0 ' CenterFrequency: 88900000 EnableTunerAGC:真正的SampleRate: 250000 OutputDataType:“双”SamplesPerFrame: 2048 FrequencyCorrection: 0 EnableBurstMode:假的
radioInfo = info (rxsdr)
radioInfo =以下值显示无线设置,而不是RTL-SDR接收机系统对象的属性值。更多的信息,“帮助comm.SDRRTLReceiver”类型。RadioName:“通用RTL2832U OEM”RadioAddress: ' 0 ' TunerName:‘R820T制造商:瑞昱的产品:“RTL2838UHIDIR”GainValues: [0 0.9000 1.4000 2.7000 3.7000 7.7000 8.7000 12.5000 14.4000 15.7000 16.6000 19.7000 20.7000 22.9000 25.4000 28 29.7000 32.8000 33.8000 36.4000 37.2000 38.6000 40.2000 49.6000 42.1000 43.4000 43.9000 44.5000 48] RTLCrystalFrequency: 28800000 TunerCrystalFrequency: 28800000 SamplingMode:“正交”OffsetTuning:“禁用”CenterFrequency: 88900000 SampleRate: 250000 FrequencyCorrection: 0

流数据的设备。

p = 1:1000 rxdata = rxsdr ();结束

改变调谐器频率和流更多的数据。的CenterFrequency属性是可调的,所以你可以改变的频率RTL-SDR没有释放对象。

rxsdr。CenterFrequency = 103.1 e6;radioInfo = info (rxsdr)
radioInfo =以下值显示无线设置,而不是RTL-SDR接收机系统对象的属性值。更多的信息,“帮助comm.SDRRTLReceiver”类型。RadioName:“通用RTL2832U OEM”RadioAddress: ' 0 ' TunerName:‘R820T制造商:瑞昱的产品:“RTL2838UHIDIR”GainValues: [0 0.9000 1.4000 2.7000 3.7000 7.7000 8.7000 12.5000 14.4000 15.7000 16.6000 19.7000 20.7000 22.9000 25.4000 28 29.7000 32.8000 33.8000 36.4000 37.2000 38.6000 40.2000 49.6000 42.1000 43.4000 43.9000 44.5000 48] RTLCrystalFrequency: 28800000 TunerCrystalFrequency: 28800000 SamplingMode:“正交”OffsetTuning:“禁用”CenterFrequency: 103100000 SampleRate: 250000 FrequencyCorrection: 0
p = 1:1000 rxdata = rxsdr ();结束

释放对象,当你完成工作。

发行版(rxsdr)

检查接收数据样本和收到RTL-SDR设备数据的延迟。

创建并初始化一个RTL-SDR接收器对象。检查对象属性。

rxsdr = comm.SDRRTLReceiver (' 0 ',“CenterFrequency”,102.5 e6,“SampleRate”,250000,“SamplesPerFrame”,2048,“EnableTunerAGC”,真正的)
rxsdr = comm.SDRRTLReceiver属性:RadioAddress: ' 0 ' CenterFrequency: 102500000 EnableTunerAGC:真正的SampleRate: 250000 OutputDataType:“int16”SamplesPerFrame: 2048 FrequencyCorrection: 0 EnableBurstMode:假的

注入一个虚拟处理时间系统使用暂停函数。流信号数据的设备。检查第三个和第四个返回值来检查丢失帧延迟接收的数据。为了提高效率,preallocateuint32变量失去了延迟。完成后使用收音机,释放对象连接到它。

失去了= uint32 (0 (100 1));延迟= uint32 (0 (100 1));frameTime = rxsdr.SamplesPerFrame / rxsdr.SampleRate;processingTime = frameTime * 4;p = 1:10 0 [x ~ (p),延迟(p)] = rxsdr ();暂停(processingTime);结束发行版(rxsdr)

块生成显示帧的数据丢失和延迟。RTL-SDR接收器对象有一个能容纳128帧缓冲区。情节表示,当128年累积延迟到达,数据丢失,因为RTL-SDR设备缓冲区溢出。

次要情节(211)numLostFrames = / rxsdr.SamplesPerFrame丢失;ax = plotyy(1:10 0,延迟,1:10 0,numLostFrames);网格包含(的帧数)ylabel (ax (1),“帧延迟”)ylabel (ax (2),“丢失帧”)次要情节(212)情节(processingTime * (1100))情节(frameTime *(1100))的网格包含(的帧数)ylabel (“时间(s)”)传说(的处理时间,“帧时间”)举行

检查RTL-SDR接收数据帧的延迟,当处理时间变化作为一个锯齿波模式。

创建并初始化一个RTL-SDR接收器对象。检查对象属性。

rxsdr = comm.SDRRTLReceiver (' 0 ',“CenterFrequency”,102.5 e6,“SampleRate”,250000,“SamplesPerFrame”,2048,“EnableTunerAGC”,真正的)
rxsdr = comm.SDRRTLReceiver属性:RadioAddress: ' 0 ' CenterFrequency: 102500000 EnableTunerAGC:真正的SampleRate: 250000 OutputDataType:“int16”SamplesPerFrame: 2048 FrequencyCorrection: 0 EnableBurstMode:假的

模拟数据处理时间,使用暂停函数将一个虚拟处理时间注入系统,模拟一个锯齿波模式。流信号数据的设备。检查第四返回值来检查延迟接收的数据。为了提高效率,preallocateuint32变量延迟。完成后使用收音机,释放对象连接到它。

延迟= uint32 (0 (100 1));frameTime = rxsdr.SamplesPerFrame / rxsdr.SampleRate;processingTimeStep = 0.1 * frameTime;p = 1:10 0 [x, ~, ~,延迟(p)] = rxsdr ();暂停(processingTimeStep * mod (p, 15));结束发行版(rxsdr)

生成的情节显示接收的数据帧的延迟。情节表示,仍在一帧的延迟,直到处理时间超过了帧时间。系统恢复后几帧处理时间低于帧时间。

次要情节(211)情节(延迟)网格包含(的帧数)ylabel (“帧延迟”)次要情节(212)情节(processingTimeStep * mod (1:10 0, 15))情节(frameTime *(1100))的网格包含(的帧数)ylabel (“时间(s)”)传说(的处理时间,“帧时间”)举行

更多关于

全部展开

引用

[1]特别提款权(软件定义无线电),https://osmocom.org/projects/sdr/wiki/rtl-sdr规范

版本历史

介绍了R2014a