主要内容

comm.SampleRateOffset

应用采样率偏移信号

描述

comm.SampleRateOffset系统对象™对输入信号应用采样速率偏移。应用采样速率偏移相当于更改ADC时钟速率。

对信号施加采样速率偏移:

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

  2. 调用带有参数的对象,就像调用函数一样。

要了解更多关于System对象如何工作的信息,请参见什么是系统对象?

创建

描述

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

例子

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

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

属性

全部展开

以百万分之一(ppm)为单位的采样率偏移,指定为大于-1e6的标量。

数据类型:

使用

语法

描述

例子

y“= sro”(x应用配置的采样速率偏移地面读数输入信号,并返回结果信号。

输入参数

全部展开

输入信号,指定为标量anN年代元素列向量,或者anN年代——- - - - - -NC矩阵。N年代是时间样本的个数。NC是通道数。对于矩阵输入信号,采样率偏移分别应用于每一列。

数据类型:|
复数支持:万博1manbetx是的

输出参数

全部展开

输出信号,作为数据类型与输入信号相同的标量、向量或矩阵返回x

对象的功能

要使用对象函数,请将System对象指定为第一个输入参数。例如,释放名为obj,使用以下语法:

发行版(obj)

全部展开

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

例子

全部折叠

设置参数和输入信号。

M = 16;调制顺序%Offset = 50;%百万分率data = (0:M-1)';输入信号%refconst = qammod(data,M);%参考星座点

创建采样率偏移和星座图系统对象。

sro = comm.SampleRateOffset(offset);constdiagram = com . constellationdiagram (...“ReferenceConstellation”refconst,...“XLimits”, 5 [5],...“YLimits”, 5 [5],...“标题”“带有偏移采样率的信号”);

对随机数据应用16-QAM调制,然后对调制信号应用采样速率偏移。绘制参考星座和信号的偏移采样率偏移。

modData = qammod(repmat(data,100,1),M);impairedData = sro(modData);constdiagram (impairedData)

应用采样率偏移到30khz单音正弦波。在应用正、负采样率偏移后,通过计算发送和接收之间的频率差来确定偏移量。

生成30千赫的单音。

F = 30e3;Samplerate = 100e3;SRC = dsp。SineWave (“频率”f...“SampleRate”samplerate,...“SamplesPerFrame”, 10000,...“ComplexOutput”,真正的);Txsig = src();

验证提示音的频率。

Freqtx =采样率*...(意思是(角(txsig(2:结束)。/ txsig (1: end-1))) /(2 *π))
Freqtx = 3.0000e+04

对传输音调应用20ppm的采样速率偏移量(txsig).增加采样速率偏移量相当于增加ADC时钟速率。

sro = com . samplerateoffset (20);Rxsig = sro(txsig);

找出接收到的音调的频率(rxsig),然后抵消采样率。要跳过具有瞬态效应的样本,请忽略前100个样本。

Freqrx =采样率*...(意思是(角(rxsig(101:结束)。/ rxsig (100: end-1))) /(2 *π))
Freqrx = 2.9999e+04

增加ADC时钟速率,降低接收到的音的频率。要显示接收到的音调的频率减少了大约20ppm,请将发送的音调的频率与接收到的音调的频率进行比较。

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

对传输音调施加- 30ppm的采样率偏移量(txsig).减小采样速率偏移量相当于减小ADC时钟速率。

sro = comm.SampleRateOffset(-30);Rxsig = sro(txsig);

找出接收到的音调的频率(rxsig),然后抵消采样率。要跳过具有瞬态效应的样本,请忽略前100个样本。

Freqrx =采样率*...(意思是(角(rxsig(101:结束)。/ rxsig (100: end-1))) /(2 *π))
Freqrx = 3.0001e+04

降低ADC时钟速率,增加接收到的音的频率。要显示接收到的音调的频率增加了大约30 ppm,请将发送的音调的频率与接收到的音调的频率进行比较。

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

显示接收机中采样率偏移对QPSK信号的影响。

传输包含固定前导和随机有效载荷的帧。在接收器中,使用前导查找帧的开始,然后解调有效负载并测量EVM。在恒定的非零采样率偏移下,EVM在帧与帧之间具有一致的周期性变化。

初始化配置参数并为发射器和接收器创建脉冲整形过滤器对象。

numFrames = 200;numSymbolsPerFrame = 4096;preambleLength = 64;payloadLength = numSymbolsPerFrame - preambleLength;modulationOrder = 4;Rolloff = 0.2;filterSpan = 10;samplesPerSymbol = 8;txFilter = com . raisedcosinetransmitfilter (RolloffFactor=rolloff,...FilterSpanInSymbols = filterSpan,...OutputSamplesPerSymbol = samplesPerSymbol);rxFilter = com . raisedcosinerreceivefilter (RolloffFactor=rolloff,...FilterSpanInSymbols = filterSpan,...InputSamplesPerSymbol = samplesPerSymbol DecimationFactor = 1);

使用Gold序列作为序言。将黄金序列映射到QPSK星座的0.7071 + 0.7071i和-0.7071 -0.7071i。

goldSeq = com . goldsequence (SamplesPerFrame=preambleLength);preamble = goldSeq();序言(序言= = 1)= 2;preambleModOut = pskmod(preamble,modulationOrder,pi/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;zero (payloadLength,1)]);

对接收的信号施加0.8 ppm的采样率偏移。

simulatedSRO = 0.8;sro = com . samplerateoffset(模拟sro);rxSig = rxFilter(sro(txSig));

使用匹配的过滤器来查找序言。

matchedFilterResponse = conj(flipud(preambleRef));matchedFilterOutMag = abs(filter(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)]);网格

图中包含一个axes对象。标题为Matched Filter Output(量级)的axes对象包含一个类型为line的对象。

通过绘制计算得到的EVM值和接收到的信号星座图,定位帧并检查接收到的数据。估计样本速率偏移量。为了得到更准确的估计,可以增加传输帧的数量。

frameDelay = peakLocations - length(preambleRef);constDiag = com . constellationdiagram (Title=收到有效载荷的...位置=[20 70 600 600]);evm = com . evm;evmScope = timescope(TimeUnits=“没有”时间间隔=长度(frameDelay),...YLabel ='维生素(%)'YLimits = [0 15], TimeAxisLabels =“没有”...Position=[650 120 800 500]);i = 1:length(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 = (mean(peakSpacings)/ nominalpeakspacing1)*1e6
estimatedSRO = 0.7668

扩展功能

版本历史

在R2021b中引入