AnyMath 文档

sfdr

动范围,无寄生成分。

库::`工程师`

语法

函数调用

* [参数:r]=sfdr(<参数:x>>) -返回无杂散分量的动态范围(无杂散动态范围,SFDR) [参数:r] 以dB为单位的真实正弦信号 [参数:x]. 功能 *sfdr* 使用修改的周期图和Kaiser窗口计算功率谱, . 平均值减去 [参数:x] 前计算功率谱。 计算离散傅立叶变换(dft)时使用的点数等于信号的长度 [参数:x].

* [参数:r]=sfdr(<参数:x>>,<参数:fs>>) -返回输入信号的SFDR [参数:x] 在给定采样速率下的时域中 [参数:fs]. 意义 [参数:fs] 默认值为 1 赫兹。

* [参数:r]=sfdr(<参数:x>>,<参数:fs>>,<参数:msd>>) -返回SFDR,只考虑寄生分量与主(载波)频率相隔最小距离的寄生分量。 [参数:msd],以周期/时间单位指定。 采样率为 [参数:fs]. 如果载波频率为 财务委员会,则区间内的所有寄生成分 (Fc-[参数:msd],Fc+[参数:msd]) 它们被忽略了。

* [参数:r]=sfdr(<参数:sxx>>,<参数:f>>,"功率") -返回实值信号的单向功率谱的SFDR [参数:sxx]. 论点 [参数:f] -与功率估计值相对应的频率向量 [参数:sxx]. 第一个元素 [参数:f] 必须等于 0. 该算法消除了所有功率,随着它远离单元的恒定分量而单调减小。

* [参数:r]=sfdr(<参数:sxx>>,<参数:f>>,<参数:msd>>,"电源") -返回SFDR,只考虑寄生分量与主(载波)频率相隔最小距离的寄生分量。 [参数:msd]. 如果载波频率为 财务委员会,则该区间内的所有寄生成分 (Fc-[参数:msd],Fc+[参数:msd]) 它们被忽略了。 如果函数输入为 *sfdr* 功率谱被提供,指示 [参数:msd] 它可以防止高水平的旁瓣被识别为寄生成分。

* [参数:r],[参数:spurpow],[参数:spurfreq]=sfdr(___) -返回最大寄生分量的功率和频率。

* sfdr(___,out=:plot) -在当前图形窗口中绘制信号频谱。 不同的颜色用于显示主分量、常数分量的值和光谱的其余部分。 SFDR为阴影,其值显示在图形上方。 还注意到主要谐波和最大寄生分量。

争论

输入参数

# *x*是 一个真正的正弦信号

+ 向量字符串 | 列向量

Details

定义为行向量或列向量的真实正弦信号。 平均值减去 x 之前获得用于计算SFDR的功率谱。

数据类型

漂浮64</无翻译>

# *财政司司长* — 抽样调查 费率+ 1 (默认情况下)| 正标量

Details

周期/单位时间的信号的采样频率,设为正标量。 如果时间单位是秒, 财政司司长 以Hz为单位测量。

数据类型

漂浮64</无翻译>

# *msd* — 寄生元件之间的最小距离

+ 0 (默认)| 正标量

Details

计算SFDR时应忽略的离散傅立叶变换(dft)仓的最小数量,设置为正标量。 该参数可用于忽略发生在基频附近的寄生分量或旁瓣。 例如,如果载波频率是 财务委员会,那么范围内的所有寄生成分 (Fc-msd,Fc+msd) 它们被忽略了。

数据类型

漂浮64</无翻译>

# *sxx* — 单向功率谱

+ 向量-正数的行或向量-列

Details

用于SFDR计算的单向功率谱,指定为行向量或列向量。

功率谱应以线性单位表示,而不是以分贝表示。

数据类型

漂浮64</无翻译>

# *f*是 的频率向量

+ 非负数的行向量或列向量

Details

与功率估计值相对应的频率向量 [参数:sxx],指定为行向量或列向量。

输出参数

# *r*是 无寄生元件的动态范围

+ 真正的标量

Details

动态范围(不含杂散分量)(以dB为单位)作为真实标量返回。 无寄生分量的动态范围是峰值频率处的功率与下一个最高频率处的功率(寄生分量)之间的dB差。 如果输入数据是时间序列,则使用汉明窗口从修改的周期图中获得功率估计。 周期图中使用的DFT的长度等于输入信号的长度 [参数:x]. 如果您想使用不同的功率谱作为SFDR测量的基础,您可以使用标志输入您的功率谱 "权力".

数据类型

漂浮64</无翻译>

# *spurpow* — 最大寄生分量的功率

+ 真正的标量

Details

以dB为单位的最大寄生分量的功率,作为真正的标量返回。

数据类型

漂浮64</无翻译>

# *spurfreq* — 最大寄生分量的频率

+ 真正的标量

Details

以Hz为单位的最大寄生分量的频率,作为真实标量返回。 如果采样频率未指定为输入参数,则函数 *sfdr* 假设采样率 1 赫兹。

数据类型

漂浮64</无翻译>

例子:

SFDR鼻窦

Details

为音调定义SFDR 10 具有幅度的MHz 1,在频率采样 100 兆赫。 在一次谐波上(20 MHz)存在幅值为 .

import EngeeDSP.Functions: sfdr

deltat = 1e-8
fs = 1 / deltat
t = 0:deltat:1e-5-deltat
x = cos.(2 &ast; π &ast; 10e6 &ast; t) + 3.16e-4 &ast; cos.(2 &ast; π &ast; 20e6 &ast; t)
r = sfdr(x, fs)[1]
70.00625834763413

让我们输出信号的频谱。 我们将指定基波谐波、常数分量的值、寄生分量和SFDR。

sfdr(x, fs, out=:plot)

sfdr 1

寄生元件之间的最小距离

Details

为音调定义SFDR 10 具有幅度的MHz 1,在频率采样 100 兆赫。 在一次谐波上(20 MHz)存在幅值为 . 让我们使用寄生元件之间的最小距离跳过一次谐波。 11 兆赫。

import EngeeDSP.Functions: sfdr

deltat = 1e-8
fs = 1 / deltat
t = 0:deltat:1e-5-deltat
x = cos.(2 &ast; π &ast; 10e6 &ast; t) + 3.16e-4 &ast; cos.(2 &ast; π &ast; 20e6 &ast; t) + 0.1e-5 &ast; cos.(2 &ast; π &ast; 25e6 &ast; t)
r = sfdr(x, fs, 11e6)[1]
120.00000000390743

让我们输出信号的频谱。 我们将指定基波谐波、常数分量的值、寄生分量和SFDR。

sfdr(x, fs, 11e6, out=:plot)

sfdr 2

最大寄生分量的频率和功率

Details

让我们定义最大寄生分量的频率(以MHz为单位)。 输入信号是音调 10 具有幅度的MHz 1,以频率采样 100 兆赫。 在一次谐波上(20 MHz)存在幅值为 .

import EngeeDSP.Functions: sfdr

deltat = 1e-8
t = 0:deltat:1e-6-deltat
x = cos.(2 &ast; π &ast; 10e6 &ast; t) + 3.16e-4 &ast; cos.(2 &ast; π &ast; 20e6 &ast; t)
r, spurpow, spurfreq = sfdr(x, 1 / deltat)
spur_MHz = spurfreq / 1e6
20.0

此外

失真测量功能

Details

功能 *sfdr*, *辛纳德**信噪比* 测量由正弦波激励的弱线性系统的响应。

当在时域中设置输入数据时,功能 *sfdr* 使用旁瓣衰减较大的Kaiser窗口构建周期图。 为了找到基频,算法在周期图上搜索最大的非零频谱分量。 然后它计算所有相邻区间的中心时刻,随着距离最大值单调递减。 对于检测,主频率必须至少在第二频率仓中。 如果一个谐波位于另一个谐波旁边的单调递减区域,则其功率被认为属于较大的谐波。 这个大的谐波可能是也可能不是主要的。 该算法忽略所有功率,随着它远离常数分量而单调减小。

功能 *sfdr* 如果基频不是信号中最强大的频谱分量,它就会失败。

确保频率分量足够间隔以考虑到Kaiser窗口的旁瓣的宽度。 如果这是不可能的,您可以使用该标志 "权力" 并计算具有不同窗口的周期图。