2026a

# toi


三阶交调截点

函数库: TySignalProcessing

# 语法

oip3, = toi(x)
oip3, = toi(x,fs)
oip3, = toi(pxx,f,"psd")
oip3, = toi(sxx,f,rbw,"power")
oip3,fundpow,fundfreq,imodpow,imodfreq = toi(___)
oip3,fundpow,fundfreq,imodpow,imodfreq = toi(___;plotfig = Bool)

# 说明

oip3, = toi(x) 返回实际正弦双音输入信号 x 的输出三阶交调截点(toi),单位为分贝(dB)。使用 β=38 的 Kaiser 窗口,在与输入长度相同的周期图上执行计算。


oip3, = toi(x,fs) 指定采样率 fs。fs 的默认值为 1。 示例


oip3, = toi(pxx,f,"psd") 将输入指定为实信号的单边功率谱密度(psd)pxx。f 是对应于 pxx 估计向量的频率向量。 示例


oip3, = toi(sxx,f,rbw,"power") 将输入指定为实信号的单边功率谱sxx。rbw 是对每个功率估计进行积分的分辨率带宽。 示例


oip3,fundpow,fundfreq,imodpow,imodfreq = toi(___) 还返回两个基本正弦波的功率fundpow和频率fundfreq。它还返回下和上互调产物的功率imodpow和频率imodfreq。此语法可以使用前面语法中的任何输入参数。 示例


oip3,fundpow,fundfreq,imodpow,imodfreq = toi(___;plotfig = Bool) 绘制了信号的频谱,并注释了上下基本面(f1,f2)和互调产物。高次谐波和互调产物未标注。TOI显示在绘图上方。 示例

# 示例

含噪声双音非线性信号的三阶交调截点

创建频率为 f 的双音正弦曲线 kHz 和 kHz,以 48 kHz采样。通过将信号馈送到多项式,使其非线性。添加噪波。将随机数生成器设置为可再现结果的默认设置。计算三阶交调截点。确认互调产物出现在 kHz 和 =7 kHz。

using TySignalProcessing
using TyMath
rng = MT19937ar(1234)
fi1 = 5e3
fi2 = 6e3
Fs = 48e3
N = 1000
x = sin.(2 * pi * fi1 / Fs * (1:N)) + sin.(2 * pi * fi2 / Fs * (1:N))
y = polyval([0.5e-3, 1e-7, 0.1, 3e-3], x) + 1e-5 * randn(rng, N)

myTOI, Pfund, Ffund, Pim3, Fim3 = toi(y, Fs)
myTOI = 1.4022339636751404

Fim3 = 2-element Vector{Float64}:
 4000.2295401627825
 7000.064949918294
功率谱密度的三阶交调截点

创建频率为 5 kHz和 6 kHz的双音正弦曲线,采样频率为 48 kHz。通过计算多项式使信号非线性。添加噪波。将随机数生成器设置为可再现结果的默认设置。

using TySignalProcessing
using TyMath
rng = MT19937ar(1234)
fi1 = 5e3
fi2 = 6e3
Fs = 48e3
N = 1000
x = @. sin(2 * pi * fi1 / Fs * (1:N)) + sin(2 * pi * fi2 / Fs * (1:N))
y = polyval([0.5e-3, 1e-7, 0.1, 3e-3], x) + 1e-5 * randn(rng, N)

使用 Kaiser 窗口评估信号的周期图。使用功率谱密度计算 TOI。绘制结果。

w = kaiser(length(y), 38)

Sxx, F = periodogram(y, w, N, Fs, "psd"; nargout = 2);
myTOI, Pfund, Ffund, Pim3, Fim3 = toi(Sxx, F, "psd"; plotfig=true)
myTOI = 1.402233963674238

Pfund = 2-element Vector{Float64}:
 -22.91326482098028
 -22.912935629416037

Ffund = 2-element Vector{Float64}:
 5000.001107406521
 5999.998791215922

Pim3 = 2-element Vector{Float64}:
 -71.505942233784
 -71.58159497210191

Fim3 = 2-element Vector{Float64}:
 4000.229540162775
 7000.064949918268
功率谱的三阶交调截点

创建频率为 5 kHz和 6 kHz的双音正弦曲线,采样频率为 48 kHz。通过计算多项式使信号非线性。添加噪波。将随机数生成器设置为可再现结果的默认设置

using TySignalProcessing
using TyMath
rng = MT19937ar(1234)
fi1 = 5e3
fi2 = 6e3
Fs = 48e3
N = 1000
x = @. sin(2 * pi * fi1 / Fs * (1:N)) + sin(2 * pi * fi2 / Fs * (1:N))
y = polyval([0.5e-3, 1e-7, 0.1, 3e-3], x) + 1e-5 * randn(rng, N)

使用Kaiser窗口评估信号的周期图。使用功率谱计算TOI。绘制结果。

w = kaiser(length(y), 38)

Sxx, F = periodogram(y, w, N, Fs, "power"; nargout = 2);
myTOI, Pfund, Ffund, Pim3, Fim3 = toi(Sxx, F, enbw(w, Fs), "power"; plotfig=true)
myTOI = 1.402233963674238
互调失真

生成 640 个频率为 5 Hz和 7 Hz的双音正弦曲线样本,采样频率为 32 Hz。通过计算多项式使信号非线性。添加标准偏差为 0.01的噪声。将随机数生成器设置为可再现结果的默认设置。计算三阶交调截点。确认互调产物出现在 kHz 和 =3 kHz。

using TySignalProcessing
using TyMath
rng = MT19937ar(1234)
x = @. sin(2 * pi * 5 / 32 * (1:640)) + cos(2 * pi * 7 / 32 * (1:640))
q = x + 0.01 * x .^ 3 + 1e-2 * randn(rng, size(x));
myTOI, Pfund, Ffund, Pim3, Fim3 = toi(q, 32)
myTOI = 18.575131444330854

Pfund = 2-element Vector{Float64}:
 -2.8340009557560943
 -2.8124239187795164

Ffund = 2-element Vector{Float64}:
 5.0
 6.999952498243872

Pim3 = 2-element Vector{Float64}:
 -45.675591039052364
 -45.564209361877886

Fim3 = 2-element Vector{Float64}:
 3.044528240735208
 8.998271960543697
三阶交调截点绘图

生成 640 个频率为 5 Hz 和 7 Hz 的双音正弦曲线样本,采样频率为 32 Hz。通过计算多项式使信号非线性。添加标准偏差为 0.01 的噪声。将随机数生成器设置为默认设置。绘制信号的频谱。显示基本原理和互调产物。确认后者在 9 Hz 和 3 Hz 时出现。

using TySignalProcessing
using TyMath
rng = MT19937ar(1234)
x = @. sin(2 * pi * 5 / 32 * (1:640)) + cos(2 * pi * 7 / 32 * (1:640));
q = x + 0.01 * x .^ 3 + 1e-2 * randn(rng, size(x));
toi(q, 32; plotfig=true)

# 输入参数

x - 实正弦双音信号
向量

实正弦双音信号,指定为向量。

fs - 采样频率
1(默认值)| 正实标量

采样率,指定为正实标量。采样率是每单位时间的采样数。如果时间单位为秒,则采样率的单位为赫兹。

pxx - 单边PSD估计
向量

单边功率谱密度估计,指定为实值、非负向量。

功率谱密度必须用线性单位表示,而不是分贝。使用 db2pow 将分贝值转换为功率值。

f - 循环频率
向量

与指定为向量的单侧 PSD 估计值 pxx 相对应的周期频率。f 的第一个元素必须为 0。

sxx - 功率谱
非负实向量

功率谱,指定为实值非负向量。

功率谱必须用线性单位表示,而不是分贝。使用 db2pow 将分贝值转换为功率值

rbw - 分辨率带宽
正标量

分辨率带宽,指定为正标量。分辨率带宽是离散傅里叶变换的频率分辨率和窗口的等效噪声带宽的乘积。

# 输出参数

oip3 - 三阶交调截点
标量

双音信号的输出三阶交调截点,返回为以分贝表示的实值标量。如果第二个基波信号是基波信号的第二谐波,则较低互调产物处于零频率。在这些情况下,函数返回 NaN。

fundpow - 基本正弦波的功率
二元实行向量

包含在输入信号的两个基本正弦曲线中的功率,作为实值两元素行向量返回。

fundfreq - 基本正弦波的频率
二元实行向量

输入信号的两个基本正弦曲线的频率,作为实值两元素行向量返回。

imodpow - 互调产物的功率
二元实行向量

包含在输入信号的下和上互调产物中的功率,作为实值两元素行向量返回。

imodfreq - 互调产物的频率
二元实行向量

输入信号的下互调和上互调产物的频率,作为实值两元素行向量返回。

# 另请参阅

sfdr | sinad | snr | thd