主要内容

comm.SampleRateOffset

应用采样率抵消信号

描述

comm.SampleRateOffset系统对象™适用于输入信号的采样率抵消。应用采样率抵消相当于改变了ADC时钟频率。

申请一个信号的采样率抵消:

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

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

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

创建

描述

地面读数= comm.SampleRateOffset创建一个采样率抵消系统对象。

例子

地面读数= comm.SampleRateOffset (抵消)设置抵消属性的值抵消输入参数。

地面读数= comm.SampleRateOffset (抵消=抵消)设置抵消属性指定的值抵消

属性

全部展开

采样率抵消在ppm (ppm),指定为一个标量大于1 e6。

数据类型:

使用

描述

例子

y“= sro”(x)应用配置的采样率抵消地面读数输入信号并返回产生的信号。

输入参数

全部展开

输入信号,指定为一个标量N年代元素列向量,或一个N年代——- - - - - -NC矩阵。N年代是时间样本的数量。NC通道的数量。矩阵输入信号的采样率抵消应用独立的每一列。

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

输出参数

全部展开

输出信号,作为一个标量,返回向量或矩阵具有相同数据类型作为输入信号x

对象的功能

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

发行版(obj)

全部展开

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

例子

全部折叠

设置参数和输入信号。

M = 16;%调制顺序抵消= 50;%百万分之数据= (0:m - 1) ';%输入信号refconst = qammod(数据,M);%参考星座点

系统对象创建采样率抵消和星座图。

地面读数= comm.SampleRateOffset(抵消);constdiagram = comm.ConstellationDiagram (“ReferenceConstellation”refconst,“XLimits”,5 [5],“YLimits”,5 [5],“标题”,“与抵消信号采样率”);

16-QAM灯适用于随机数据,然后应用调制信号的采样率抵消。情节参考星座和抵消信号采样率偏移量。

modData = qammod (repmat(100年数据,1),M);“impairedData = sro”(modData);constdiagram (impairedData)

采样率补偿适用于30千赫单频正弦波。确认抵消计算频率区别传播语气和接收到的语气在应用积极的和消极的采样率补偿。

生成一个单音30千赫。

f = 30 e3;samplerate = 100年e3;src = dsp.SineWave (“频率”f“SampleRate”samplerate,“SamplesPerFrame”,10000,“ComplexOutput”,真正的);txsig = src ();

验证音调的频率。

freqtx = samplerate *(意思是(角(txsig(2:结束)。/ txsig (1: end-1))) /(2 *π))
freqtx = 3.0000 e + 04

应用一个采样率抵消20 ppm传播基调(txsig)。增加采样率抵消相当于增加了ADC时钟频率。

地面读数= comm.SampleRateOffset (20);“rxsig = sro”(txsig);

发现收到音调的频率(rxsig)抵消后采样率。跳过样本与瞬态效应,忽略第一个100个样本。

freqrx = samplerate *(意思是(角(rxsig(101:结束)。/ rxsig (100: end-1))) /(2 *π))
freqrx = 2.9999 e + 04

提高ADC时钟频率,减少收到音调的频率。显示收到了音调的频率减少了大约20 ppm,比较的频率传输音调的频率接收基调。

freqchangeppm = (freqrx-freqtx) / freqtx * 1 e6
freqchangeppm = -19.9365

应用一个采样率抵消-30 ppm的传输基调(txsig)。减少了采样率抵消相当于降低ADC时钟频率。

地面读数= comm.SampleRateOffset (-30);“rxsig = sro”(txsig);

发现收到音调的频率(rxsig)抵消后采样率。跳过样本与瞬态效应,忽略第一个100个样本。

freqrx = samplerate *(意思是(角(rxsig(101:结束)。/ rxsig (100: end-1))) /(2 *π))
freqrx = 3.0001 e + 04

降低ADC时钟频率,提高了频率接收的基调。显示收到了音调的频率增加了大约30 ppm,比较的频率传输音调的频率接收基调。

freqchangeppm = (freqrx-freqtx) / freqtx * 1 e6
freqchangeppm = 30.0736

显示采样率的影响抵消QPSK信号的接收机。

传输帧包含一个固定的序言和随机载荷。在接收机中,使用中找到一帧的开始,然后解调有效负载和测量维生素。与一个常数非零采样率抵消,维生素与一致的周期性变化从帧到帧。

初始化配置参数和创建脉冲整形滤波对象发射机和接收机。

numFrames = 200;numSymbolsPerFrame = 4096;preambleLength = 64;payloadLength = numSymbolsPerFrame - preambleLength;modulationOrder = 4;滚边= 0.2;filterSpan = 10;samplesPerSymbol = 8;txFilter = comm.RaisedCosineTransmitFilter (RolloffFactor =滚边,FilterSpanInSymbols = filterSpan,OutputSamplesPerSymbol = samplesPerSymbol);rxFilter = comm.RaisedCosineReceiveFilter (RolloffFactor =滚边,FilterSpanInSymbols = filterSpan,InputSamplesPerSymbol = samplesPerSymbol DecimationFactor = 1);

使用一个黄金序列中。黄金序列映射到0.7071 + 0.7071和-0.7071 - -0.7071我在QPSK星座。

goldSeq = comm.GoldSequence (SamplesPerFrame = preambleLength);序言= goldSeq ();序言(序言= = 1)= 2;preambleModOut = pskmod(序言、modulationOrderπ/ modulationOrder);

生成一个序言时域参考信号。

preambleRefDelayed = rxFilter (txFilter ([preambleModOut; 0 (filterSpan, 1))));preambleRef = preambleRefDelayed (filterSpan * samplesPerSymbol + (1: samplesPerSymbol * preambleLength));

生成一个随机载荷和传输信号。

txPayload = pskmod (兰迪([0 modulationOrder-1], payloadLength numFrames),modulationOrder,π/ modulationOrder);txFrames =重塑([repmat (preambleModOut 1 numFrames); txPayload], [], 1);txSig = txFilter ([txFrames; 0 (payloadLength 1)]);

0.8 ppm采样率抵消适用于接收到的信号。

simulatedSRO = 0.8;地面读数= comm.SampleRateOffset (simulatedSRO);“rxSig = rxFilter (sro”(txSig));

使用匹配滤波器来找到序言。

matchedFilterResponse =连词(flipud (preambleRef));matchedFilterOutMag = abs(过滤器(matchedFilterResponse 1 rxSig));

找到峰值位置和前十的山峰。

阈值= max (matchedFilterOutMag) * 0.7;[~,peakLocations] = findpeaks (matchedFilterOutMag,MinPeakHeight =阈值,MinPeakDistance = preambleLength * samplesPerSymbol);情节(matchedFilterOutMag)标题(匹配滤波器输出(大小)的)包含(“样本”)轴([0 numSymbolsPerFrame * samplesPerSymbol * 10*马克斯(matchedFilterOutMag) 1.25 * -0.15马克斯(matchedFilterOutMag)]);网格

图包含一个坐标轴对象。坐标轴对象与标题匹配滤波器输出(级)包含一个类型的对象。

定位框架和检查接收到的数据通过绘制维生素与计算值和接收到的信号星座。估计采样率抵消。为更精确的评估,您可以增加传输帧的数量。

frameDelay = peakLocations -长度(preambleRef);constDiag = = comm.ConstellationDiagram(标题收到有效载荷的,位置= [20 70 600 600]);维生素与= comm.EVM;evmScope = timescope (TimeUnits =“没有”时间间隔=长度(frameDelay),YLabel ='维生素(%)'YLimits = [0 15], TimeAxisLabels =“没有”,位置= [650 120 800 500]);i = 1:长度(frameDelay) rxFrame = rxSig (frameDelay (i) +(1:samplesPerSymbol: numSymbolsPerFrame * samplesPerSymbol));evmScope(维生素(txPayload(:,我),rxFrame (preambleLength + 1:结束)));constDiag (rxFrame (preambleLength + 1:结束));暂停(0.1)结束

peakSpacings = diff (peakLocations);nominalPeakSpacing = numSymbolsPerFrame * samplesPerSymbol;estimatedSRO =(平均(peakSpacings) / nominalPeakSpacing-1) * 1 e6
estimatedSRO = 0.7668

扩展功能

版本历史

介绍了R2021b