# dsp_TransferFunctionEstimator


估计传递函数

函数库: TyDSPSystem

# 说明

dsp_TransferFunctionEstimator 系统对象使用韦尔奇的平均周期图方法计算系统的传递函数。

实现传递函数估计对象:

  1. 创建 dsp_TransferFunctionEstimator 对象并设置其属性;

  2. 用 step 调用该对象。

# 构造

# 语法

tfe = dsp_TransferFunctionEstimator()
tfe = dsp_TransferFunctionEstimator(; Name = Value)

# 说明


tfe = dsp_TransferFunctionEstimator() 返回一个传递函数估计器对象,它计算实数或复数信号的传递函数。该系统对象使用周期图方法和韦尔奇的平均、修正周期图方法。


tfe = dsp_TransferFunctionEstimator(; Name = Value) 返回一个转移函数估计器对象,每个指定的属性都被设置为指定值。未指定的属性有默认值。

# 属性

除非另有说明,属性是不可调整的,这意味着你在调用对象后不能改变其值。

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

FFTLengthSource - FFT 长度值的来源
"Auto"(默认)| "Property"

FFT 长度值的来源,指定为 "Auto"(默认)或 "Property"。如果你将此属性设置为 "Auto",传递函数估计器会将 FFT 长度设置为输入帧大小。如果你把这个属性设置为 "Property",那么你就用 FFTLength 属性指定 FFT 点的数量。

FFTLength - FFT 长度
128 (默认) | 正整数

指定传递函数估计器用来计算交叉频谱估计的 FFT 的长度,作为一个正的整数标量。

当您将 FFTLengthSource 属性设置为 "Property" 时,此属性就会适用。

Window - 窗函数
"Hann"(默认)| "Rectangular" | "Chebyshev" | "Flat Top" | "Hamming" | "Kaiser"

为传递函数估计器指定一个窗口函数,作为 "Hann"、"Rectangular"、"Chebyshev"、"Flat Top"、"Hamming"、"Kaiser" 中的一个。

SidelobeAttenuation - 窗口的侧叶衰减
60 dB(默认)| 正标量

指定窗口的侧叶衰减为实数、正标量,单位为分贝(dB)。

当你将 Window 设置为 "Chebyshev" 或 "Kaiser" 时,此属性适用。

FrequencyRange - 频谱估计的频率范围
"twosided"(默认)| "onesided" | "centered"

指定传递函数估计器的频率范围为 "twosided"、"onesided"、"centered" 之一。

  • 如果你把 FrequencyRange 设置为 "onesided",那么传递函数估计器就会计算实输入信号的单侧频谱;

    • 当 FFT 长度 NFFT 为偶数时,频谱估计的长度为(NFFT/2)+1,并在频率范围 [0, SampleRate/2] 内计算,其中 SampleRate 为输入信号的采样率;

    • 当 NFFT 为奇数时,频谱估计的长度为(NFFT + 1)/2,并在频率范围 [0, SampleRate/2] 内计算。

  • 如果你把 FrequencyRange 设置为 "twosided",那么传递函数估计器就会计算复数或实数输入信号的双侧频谱;

    传递函数估计的长度等于 FFT 的长度。传递函数估计是在频率范围 [0, SampleRate] 内计算的,其中 SampleRate 是输入信号的采样率。

  • 如果你把 FrequencyRange 设置为 "centered",那么传递函数估计器就会计算复数或实数输入信号的居中两侧频谱。频谱估计的长度等于 FFT 的长度。当 FFT 长度为偶数时,传递函数估计在频率范围(-SampleRate/2, SampleRate/2)内计算,当 FFT 长度为奇数时,在(-SampleRate/2, SampleRate/2)内计算。

AveragingMethod - 平均数方法
"Running"(默认)| "Exponential"

将平均方法指定为 "Running" 或 "Exponential"。在运行平均法中,该对象计算由 SpectralAverages 属性定义的指定数量的传递函数估计值的等权平均数。在指数法中,该对象计算由指数衰减的遗忘因子加权的样本的平均值。

SpectralAverages - 频谱平均数的数量
8(默认)| 正整数

频谱平均数的数量,指定为正整数。传递函数估计器通过对最后 N 个估计值进行平均来计算当前的功率谱或功率密度谱估计值。N 是在 SpectralAverages 属性中定义的频谱平均数的数量。

当你将 AveragingMethod 设置为 "Running" 时,此属性适用。

ForgettingFactor - 遗忘因子
0.9 (默认) | 范围内的标量 (0,1]

将指数加权遗忘因子指定为大于零且小于等于 1 的标量值。

当你将 AveragingMethod 设置为 "Exponential" 时,该属性适用。

# 用法

# 语法

tfeEst, = step(tfe, x, y)
tfeEst, cxy = step(tfe, x, y)

# 说明


tfeEst, = step(tfe, x, y) 使用韦尔奇的平均周期图法计算输入 x 和输出 y 的系统的传递函数估计值 tfeEst。


tfeEst, cxy = step(tfe, x, y) 还计算了系统的幅度平方相干性估计值 cxy。

# 输入参数

x - 第一个输入数据
向量 | 矩阵

第一个输入数据,指定为一个向量或一个矩阵。输入 x 和 y 必须有相同的大小和数据类型。

y - 第二个输入数据
向量 | 矩阵

第二个输入数据,指定为一个向量或一个矩阵。输入x 和 y 必须有相同的大小和数据类型。

# 输出参数

tfeEst - 传递函数估计
向量 | 矩阵

系统的传递函数估计,其中 x 和 y 分别为输入和输出信号。

该估计值 feEst,等于 pxy./pxx,其中 pxy 是 x 和 y 的交叉功率谱密度,pxx 是 x 的功率谱密度。

传递函数估计值的大小和数据类型与输入值相同。

cxy - 相干性估计
向量 | 矩阵

系统的幅度平方相干性估计,以向量或矩阵形式返回。

相干性估计值 cxy 等于(abs(pxy).^2)./(pxx.*pyy),其中 pxy 是 x 和 y 的交叉功率谱密度,pxx 是 x 的功率谱密度,pyy 是 y 的功率谱密度。

相干性估计的大小和数据类型与输入相同。

# 对象函数

要使用对象函数,请将系统对象指定为第一个输入参数。

对系统对象通用的操作
函数名 简介
step 运行系统对象算法
reset 重置系统对象的内部状态
release 释放资源并允许更改系统对象属性值和输入特征

# 示例

估计由 64 阶 FIR 滤波器表示的系统的传递函数
using TyDSPSystem
using TyMath
using TySignalProcessing

rng = MT19937ar(1234)
sine = dsp_SineWave(; Frequency=100, SampleRate=1000, SamplesPerFrame=1000)
tfe = dsp_TransferFunctionEstimator(; FrequencyRange="centered")
plotter = dsp_ArrayPlot(;
    PlotType="Line",
    XOffset=-500,
    YLimits=[-120 5],
    Title="System Transfer Function",
    YLabel="Frequency Response (dB)",
    XLabel="Frequency (Hz)",
)

创建一个 64 阶的 FIR 滤波器系统对象,(归一化)截止频率为 1/4。在正弦波中加入随机噪声。逐步通过系统对象以获得数据流,并绘制传递函数的大小对数。

LP = dsp_FIRFilter(; Numerator=fir1(64, 1 / 4))
x = step(sine) + 0.05 * randn(rng, 1000, 1)
y = step(LP, x)
Txy, Cxy = step(tfe, x, y)
step(plotter, 20 * log10.(abs.(Txy)))

# 参考文献

[1] Hayes, Monson H. Statistical Digital Signal Processing and Modeling. Hoboken, NJ: John Wiley & Sons, 1996

[2] Kay, Steven M. Modern Spectral Estimation: Theory and Application. Englewood Cliffs, NJ: Prentice Hall, 1999

[3] Stoica, Petre and Randolph L. Moses. Spectral Analysis of Signals. Englewood Cliffs, NJ: Prentice Hall, 2005

[4] Welch, P. D. ``The use of fast Fourier transforms for the estimation of power spectra: A method based on time averaging over short modified periodograms,'' IEEE Transactions on Audio and Electroacoustics, Vol. 15, pp. 70–73, 1967.