AnyMath 文档

modalfit,modalfit

频率特性导出的模态参数。

库::`工程师`

语法

函数调用

  • modalfit(_,out=:plot) -绘制频率特性。

争论

输入参数

# frf — 频率特性

+ 向量资料 | 矩阵 | 阵列

Details

频率特性指定为矢量、矩阵或阵列。 论点 财务汇报局 尺寸为 ,在哪里 -频率间隔数, -响应信号的数量,以及 -激励信号的数量。

使用方法 [医]modalfrf 以基于测量数据构建频率响应矩阵。

数据类型

Int64, 漂浮物32, 漂浮64</无翻译> 支持复数::是

# f — 频率

+ 向量资料

Details

指定为矢量的频率。 向量元素数 f 必须等于数组中的行数 [参数:frf].

数据类型

Int64, 漂浮物32, 漂浮64</无翻译>

# *fs*是 测量数据的采样率

+ 正标量

Details

测量数据的采样频率以Hz为单位,设为正标量。

数据类型

Int64, 漂浮物32, 漂浮64</无翻译>

# mnum — mods数量

+ 一个正整数

Details

指定为正整数的模式数。

数据类型

Int64, 漂浮物32, 漂浮64</无翻译>

输入参数 «名称-值»

将可选参数对指定为 名称,值,在哪里 姓名 -参数的名称,以及 价值 -适当的值。 类型参数 «名称-值» 它们应该放在其他参数之后,但对的顺序无关紧要。 您可以指定多个对 «名称-值».

使用逗号分隔名称和值,以及 姓名 将其用引号括起来,或者使用等号分隔名称和值,并且 姓名 指定它不带引号。

例子: modalfit(frf,f,fs,mnum,"FitMethod","pp","FreqRange",[0 500])modalfit(frf,f,fs,mnum,FitMethod="pp",FreqRange=[0 500]) 使用峰值提取方法执行近似,并限制频率范围从 0 以前 500 赫兹。

# 馈通 — 估计的传递函数中存在间隙

+ 错误 (默认情况下)| 真的

Details

估计的传递函数中存在间隙,设置为布尔值。 此参数仅在参数的情况下可用 [参数:fitmethod] 值指定 "lsrf".

数据类型

布尔</无翻译>

# FitMethod — 近似法

+ "lsce" (默认情况下)| "lsrf" | "pp"

Details

的近似方法,定义为 "lsce", "lsrf""pp".

# FreqRange — 频率范围

+ 二元素向量

Details

指定为增加正值的双元素向量的频率范围位于指定的范围内 [参数:f].

数据类型

Int64, 漂浮物32, 漂浮64</无翻译>

# PhysFreq — 物理模式的固有频率

+ 向量资料

Details

将包含在分析中的物理模式的固有频率,作为频率值的向量在由 [参数:f]. 该函数在分析中包括其固有频率最接近矢量中指示的值的那些模式。 如果向量包含 频率值,则 [参数:fn][参数:dr] 拥有软件 各行,以及 [参数:ms] 列。 如果未指定此参数,则该函数将使用 [参数:f].

数据类型

Int64, 漂浮物32, 漂浮64</无翻译>

# 驱动指数 — 激励点频率响应函数的指标

+ [1 1] (默认情况下)| 正整数的二元素向量

Details

激励点的频率特性的指数,指定为正整数的二元素向量。 向量的第一个元素必须小于或等于系统响应的数量。 向量的第二个元素必须小于或等于系统的激励次数。 基于激励点将波形归一化为单个模态形状。

例子:: "DriveIndex",[2 3] 表示激励点处的频率响应为 frf(:,2,3).

数据类型

Int64, 漂浮物32, 漂浮64</无翻译>

# — 输出数据的类型

+ :剧情 (默认情况下)| :数据 | :全部

Details

输出数据的类型:

  • :剧情 -函数返回一个图形;

  • :数据 -函数返回数据;

  • :全部 -函数返回数据和图形。

对于此参数,名称和值用等号分隔(=).

输出参数

# fn — 固有频率

+ 矩阵 | 阵列

Details

固有频率作为矩阵或数组返回。 大小 fn的 取决于所选择的近似方法 [参数:fitmethod]:

*如果指定 "lsce""lsrf" 然后 fn的 表示具有 [参数:mnum] 大小无关的元素 [参数:frf]. 如果系统有超过 mnum,mnum 振荡模式,然后是方法 "lsrf" 返回第一个 mnum,mnum 衰减最小的模式,按固有频率的升序排序。 *如果指定 "pp" 然后 fn的 它是大小的数组 [参数:mnum] 包含一个分数 fn的 和一个评级 [参数:dr][参数:frf].

# 博士 — 阻尼系数

+ 矩阵 | 阵列

Details

固有频率的阻尼系数 [参数:fn] 作为与…​大小相同的矩阵或数组返回 fn的.

# ms — 波形的矢量

+ 矩阵

Details

作为矩阵返回的波形的矢量。 论点 女士 包含 [参数:mnum] 列,每个列都包含长度波动的形状的向量 ,在哪里 -两个值中较大的一个:激励通道数和响应通道数。

# ofrf — 重构频率特性

+ 向量资料 | 矩阵 | 阵列

Details

重建的频率特性返回为与之大小相同的向量、矩阵或阵列 [参数:frf].

例子:

单通道系统的频率响应

Details

让我们评估一个简单的单通道(单输入/单输出,SISO)系统的频率响应,并将其与定义进行比较。

一维离散振荡系统由单个质量块组成 ,以千克为单位,并通过具有恒定弹性的弹簧附着在墙壁上 传感器用频率记录质量位移 赫兹。 阻尼器阻止质量的运动,在其上施加与速度成比例的力,并具有恒定的阻尼 公斤/秒。

modalfit 1

生成 3000 时间很重要。 让我们定义采样间隔 .

import EngeeDSP.Functions: modalfit, randn, modalfrf, hann, ss2tf, freqz

Fs = 1
dt = 1/Fs
N = 3000
t = dt*(0:N-1)
b = 0.01

该系统可以使用状态空间模型来描述。



哪里 为状态向量, -分别是质量的位移和速度, -驱动力,以及 -测量输出信号。 状态空间矩阵:

哪里 -单位矩阵 ,并且连续时间中的状态空间的矩阵具有形式:

Ac = [0 1; -1 -b]
A = exp(Ac * dt)

Bc = [0; 1]
B = Ac \ (A - [1 0; 0 1]) * Bc

C = [1 0]
D = 0

在第一 2000 在几秒钟内,质量通过随机动作设置在运动中,然后允许它返回到静止状态。 我们使用状态空间模型来计算系统的时间演变,从零初始状态开始。 让我们绘制质量位移作为时间的函数。

using Random

Random.seed!(1234)
u = randn(1,N) / 2
u[2001:end] .= 0

y = zeros(N)
x = [0.0; 0.0]

for k in 1:N
    y[k] = (C * x)[1] + D * u[k]
    x = A * x + B * u[k]
end


t = dt * (0:N-1)
plot(t, y, grid=true)

modalfrf 2

我们来评估系统的模态频率响应。 我们使用汉纳窗口,其长度是测量信号长度的一半。 我们表明输出信号是质量的运动。

wind = hann(Int64.(N/2));
u = vec(u)
frf,f,coh = modalfrf(u',y',Fs,wind,Sensor="dis",out=:data)

离散系统的频率响应可以表示为系统在时域中的传递函数的Z变换,在单位圆上进行计算。 让我们比较一下评级 [医]modalfrf 有了定义。

b,a = ss2tf(A,B,C,D);
ztf,fz = freqz(b,a,2048,Fs);

使用绘图

frf_siso=vec(frf[:,1,1])
ztf_siso=vec(ztf[:,1,1])

情节(f,20*log10.(abs。(frf_siso)。+1e-12),label="FRF",grid=true)
阴谋!(fz*Fs,20*log10.(abs。(ztf_siso)。+1e-12),标签="ZTF")
伊利姆斯!((-60, 40))

modalfit 3

我们来估计给定振荡模式的固有频率和衰减系数。

fn,dr,ms,ofrf = modalfit(frf,f,Fs,1,FitMethod="PP",out=:data)

println("fn - ",fn[1])
println("dr - ",dr[1])
fn - 0.15912870854643102
dr - 0.0054516425536509875

让我们比较自然频率与 ,这是无阻尼系统的理论值。

theo = 1/(2*pi)
0.15915494309189535

算法

复指数的最小二乘法

Details

复指数最小二乘法计算每个频率响应对应的脉冲响应,并使用Prony方法用一组复阻尼正弦近似响应。 采样的衰减正弦可以表示为






哪里

  • -采样率;

  • -正弦波的频率;

  • -阻尼系数;

  • -正弦波的振幅和相位。

成员名单 它们被称为_amplitudes_,并且 poles。 Proni方法表示离散函数 以叠加的形式 mod(因此, 振幅和极点):







极点是具有系数的多项式的根 , , …​, :

系数是使用形式的自回归模型找到的 计数从 :

为了找到极点,算法使用函数 . 一旦极点已知,可以通过计算极点对数的虚部和实部来确定频率和阻尼系数。 最后一步是找到振幅并使用以下方法重建脉冲响应


下面的简单实现抓住了过程的本质:

import EngeeDSP.Functions: hankel, roots

N = 4
L = 2 * N
h = rand(L)
c = -hankel(h[1:N], h[L-N+1:L]) \ h[N+1:L]
x = roots([1; reverse(c)])
V = ComplexF64[x[j]^(i-1) for i in 1:L, j in 1:N]
hrec = V * (V \ h[1:L])
result = sum(h - hrec)
0.006229773214838086 + 9.05157097882403e-17im

系统也可以这样构造,使得它包含来自几个频率特性的样本,并使用最小二乘法求解。

峰提取方法

Details

峰值提取方法假设频率响应中的每个显着峰值恰好对应一个本征模态。 假设在峰值附近,系统表现得像一个具有一个自由度的阻尼谐振子。:

哪里

  • -频率响应;

  • -无阻尼共振频率;

  • -相对阻尼;

  • -恒定阻尼;

  • -弹性常数;

  • -弥撒。

在给定的峰值位于一个点 该算法采用该峰值及其两侧固定数量的点,用虚拟变量的质量替换该项 并通过求解方程组来计算模态参数:

文学作品

  1. Allemang,Randall J.和David L.Brown。 模态分析与动态成分合成,Vol. III:模态参数估计。 技术报告AFWAL-TR-87-3069。 空军赖特航空实验室,赖特-帕特森空军基地,OH,1987年12月.

  2. 勃兰特,安德斯。 噪声和振动分析:信号分析和实验程序。_奇切斯特,英国:约翰*威利&儿子,2011.

  3. Ozdemir,Ahmet Arda和Suat Gumussoy。 _通过向量拟合在系统识别工具箱中进行函数估计。_国际自动控制联合会第20届世界大会会议记录,法国图卢兹,2017年7月。