图片缩略图

使用自动化si - cov算法进行运行模态分析

版本2.5 (2.28 MB) 大肠Cheynet
采用基于环境振动数据的si - cov算法自动识别线状结构的模态参数
4.9
13评级

40下载

更新2021年2月04

从GitHub

视图版本历史

在GitHub上查看许可证

# #总结

SSICOV的函数。M旨在仅利用环境振动自动识别线状结构的固有频率、模态振型和阻尼比。采用协方差驱动的随机子空间识别方法(si - cov)结合聚类算法对稳定图进行自动分析。

该算法的灵感来自Magalhaes等人使用的[1]。应用于吕瑟峡湾大桥[2]的环境振动监测,并与频域分解技术[3]进行了比较。最后,我们发现该算法足够精确地显示出桥的特征频率随温度[4]的变化。

# #内容

提交文件包括:
—数据文件BridgeData.mat
-一个Matlab Live Script Example1。说明了该算法的应用。
-一个Matlab实时脚本Example1_noToolbox。mlx复制Example1,但使用函数SSICOV_noToolbox。
—功能SSICOV,是自动化的SSI-COV算法。
-函数SSICOV_noToolbox,这是自动化的SSI-COV算法,但不使用统计学和机器学习工具箱。将Linkage算法替换为[5]的PHA_Clustering函数,将cluster函数替换为[6]衍生的Cluster2函数。
—函数plotStabDiag。M,绘制稳定图。

欢迎提出任何问题、建议或评论。

# #引用

[1] Magalhaes, F., Cunha, A., & Caetano, E.(2009)。某大跨度拱桥模态参数在线自动识别。机械工程学报,23(2),316-329。

[2] Cheynet E., Jakobsen J. B., & Snæbjörnsson, J.(2016)。复杂地形条件下悬索桥的抖振响应。土木工程学报,2018,474 -487。

[3] Cheynet E., Jakobsen J. B., & Snæbjörnsson, J.(2017)。大型风敏感结构的阻尼估计。工程科学学报,199,2047 -2053。

[4]张晓东,张晓东,张晓东(2017)。温度对悬索桥模态特性的影响。土木结构动力学,第2卷(第87-93页)。施普林格。

[5]立法机构(2021)。快速分层聚类方法- PHA (//www.tatmou.com/matlabcentral/fileexchange/46134-fast-hierarchical-clustering-method-pha), MATLAB中央文件交换。于2021年2月4日取回。

Eric Ogier(2021)。层次聚类(//www.tatmou.com/matlabcentral/fileexchange/56844-hierarchical-clustering), MATLAB中央文件交换。于2021年2月4日取回。

引用作为

基于自动化si - cov算法的运行模态分析。2020年Zenodo, doi: 10.5281 / ZENODO.3774061。

查看更多的风格

意见及评分(33

光徐

法昆nicuesa

HenryHoare

非常酷的东西!谢谢你的分享。

Fahime Sokhangou

非常感谢

安娜Banas

非常感谢。我根本没有注意到。现在这个程序运行得很好。谢谢你的快速回答和真正伟大的程序-它帮助了我很多。

大肠Cheynet

嗨,安娜,
使用可选参数“Ts”可以减少协方差矩阵的最大滞后。如果时间滞后太大,那么第203行中Toeplitz矩阵的构造将会非常耗时。大的时滞也不适合用于识别目的。您可以自定义数字Ts。经验法则是,Ts可以近似等于结构最长特征周期的3倍。假设第一个本征频率为10hz,即本征周期为0.1秒,则Ts = 3x0.1 = 0.3秒,即180个时间步长。如果您选择Ts = 10秒,即6000个时间步,函数将难以计算Toeplitz矩阵,同时为识别算法提供不太好的数据。

安娜Banas

谢谢你的回复。我想是的,但我做了一些测试,不幸的是,这段关系对我来说不是那么简单。我的信号的总点数是15631,采样率是600hz(26秒)。对于更长的信号和更低的采样率,以及更大的矩阵,计算非常快。即使在测试示例中,信号采样的个数也比我的大得多。重要的频率在40hz左右。我可以把信号采样到120赫兹,但也许我做错了。

大肠Cheynet

嗨,安娜,
如果您有很长的记录和600hz的采样频率,在函数SSICOV中创建的交叉协方差矩阵将太大,无法在Matlab中处理。如果你研究的结构振动频率较低,例如,大约1hz,你可以大大降低采样频率,例如,10-20 Hz,但仍然使用较长的记录持续时间。如果你的结构的振动频率在50赫兹或100赫兹左右,它可能足够好,有较短的记录持续时间,例如,只有几分钟。

安娜Banas

你好,我非常喜欢你的节目,它非常有用。然而,我有一件事有问题。我的数据不是很长,但是当我将采样设置为600Hz时,它需要很长时间来计算,然后我得到了一个与内存相关的错误。你能告诉我怎么解决吗?

Benu

因为我是OMA的新手,我想逐行学习这个算法,
在modalID函数中(第335-339行),
从eig (A)确定fn
这些参考是什么?

Benu

大肠Cheynet

注:与Itachi的问题是私下讨论解决的。主要结论是:(1)输入必须是动态加速度或位移响应,而不是自由衰减响应(2)沿线状结构的响应必须记录在至少两个不同的位置。

我得到这个错误,我有一个8秒的信号dt= 0.005。请问,我怎样才能摆脱这个问题?

使用SSICOV/blockHankel出错(第196行)
IRF必须是一个三维矩阵,尺寸

SSICOV错误(第95行)
[U, V] = blockHankel (IRF);

ex错误(第59行)
[fn0, zeta0 phi0 paraPlot] = SSICOV (Y, t (1));

穆罕默德Farshchin

伟大的工作!

模态分析

需要统计和机器学习工具箱中的“链接”和“聚类”。

亚历克斯

这是我用过的最好的方法。

有时测量数据被记录为列向量。把这几行放到82行怎么样?

如果是Nyy > N
y = y ';
[Nyy N] =大小(y);
结束

马蒂斯著名ullah

谢谢您的回复,先生,我使用的是matlab 2015版。

大肠Cheynet

你好,马蒂斯著名ullah,
我无法再现你得到的错误。编译运行在Matlab 2018b中没有崩溃。我不知道您使用的是哪个Matlab版本,但一个太旧的版本可能是错误消息的一个可能原因。

马蒂斯著名ullah

我运行了example1。mlx的默认数据和得到以下错误,E. Cheynet先生请帮助我消除这些错误,因为我是新的matlab。
SSICOV错误(第149行)
[fn3, zeta3 phi3] = myClusterFun (fn, zetaS,φ,mac);

Example1中的错误(第34行)
[fn0, zeta0 phi0 paraPlot] = SSICOV (rz, dt, Nmin”2“Nmax”,50岁,Ts, 15);

mmazloumi

谢谢你的回答
如果我降低采样频率约100倍(Fs=1e-4),则该代码是工作的。

大肠Cheynet

嗨mmazloumi,
通过设置最大延迟0.1秒,时间步长为1e-6秒,您创建的协方差矩阵为[M x M x 1e5],其中M是传感器的数量。结果块Toeplitz矩阵太大了,无法用Matlab处理。为了避免使Matlab崩溃,您需要一个远低于1e5的数字。

mmazloumi

我有一个长度为0.1秒,时间为1e-6的信号。
当我把Ts=0.1秒,然后有一个错误:
“错误使用零
内存不足。为您的选项输入帮助记忆。

SSICOV/blockHankel错误(第205行)
T1 = 0 (M * N1);

SSICOV错误(第97行)
[U, V] = blockHankel (IRF);“

当我输入Ts=1秒或更大,有另一个错误:
“指数超过矩阵维度。

SSICOV/NExT错误(第270行)
IRF (oo, jj:) = h0 (1: M);

SSICOV错误(第95行)
(IRF ~] =下一个(y, dt, p.Results.Ts p.Results.methodCOV);“

问题是什么,我怎样才能得到真正的结果。

问候

Wentao赵

Mihhail Samusev

我明白了,谢谢你的解释。
本文“卡多佐R,卷曲,巴博萨F。,2015 -自动模态识别的进展SHM”他们尝试类似的非规范化模式之间的距离必须执行哪些操作估计,但现在包括MAC,它扩展与任意常数(Hz)单位,也许你可以看看,寻找灵感。也许,对于普通用户来说,坚持选择一种距离度量是很酷的,但对于高级用户来说,可以在少数甚至更好的度量中进行选择,加载自己的距离函数作为可选参数。类似于MATLAB自己的“pdist”实现。

大肠Cheynet

黑Mihhail,

说得好!我将尝试看看我是否可以更严格地实现pos = fn0(:)+1-MAC0(:)的MAC数;在提交的进一步版本中。

如果不包含MAC号,则根据“eps_cluster”条件选择集群。我不知道在没有使用MAC号作为额外标准的情况下,聚类分析将在哪个点正常工作。到目前为止,我已经能够区分模式只有0.009 Hz的1.3公里长跨度桥梁使用一个低值的eps_cluster。

Mihhail Samusev

谢谢你的回答,
另一个问题是,如果在距离上不使用MAC,那么是否有可能检测到间隔很近的模式。我看到,由于它们在频率上的接近,它们将聚集在一起,MAC可能有用,以避免它?

大肠Cheynet

嗨Mihhail,

这是一个非常好的观点!我最初将变量“pos”定义为一个与频率维度相同的量,因为这样使用标准“eps_cluster”更直观。我忘记在以前版本的SSICOV函数中删除“1-MAC0(:)”。这个函数仍然工作得很好,因为在嵌套函数中研究的数据集已经对应了稳定极点,因此1-MAC0几乎为零。

在Magalhaes et al[1]的论文中,变量pos确实是没有维数的。在更新版本中,我使用了Ref.[1]中使用的定义。然而,由于现在使用相对距离进行聚类分析,在更新的函数中,标准“eps_cluster”要大得多。我认为选择pos = fn0(:)仍然是可以接受的,因为MAC数对聚类分析的影响有限。使用"pos = fn0(:)"的另一个参数是避免在标准"eps_cluster"和"eps_MAC"之间引入依赖关系。

Mihhail Samusev

您好,非常感谢您的贡献,
我有一个关于第450行SSICOV函数的问题,
当你聚类时,你首先用:

pos = fn0 (:) + 1-MAC0 (:);

纸上的Magalhaes[1]使用相同的距离,但频率是标准化的,所以这是你的实现中的一个错误还是你打算使用这个距离?

无论如何,非常感谢您的工作,它有助于开发结构健康监测工具箱,为我的大学
https://se.mathworks.com/matlabcentral/fileexchange/68988-shmtoolbox

大肠Cheynet

嗨Xinzhe元,
错误可能是由于交叉协方差矩阵没有正确建立而触发的。我将更新这个函数,以提供更健壮的T1定义。然而,它可能不会解决您的问题,而只是触发一个新的错误。我建议您检查用作输入的时间延迟(请参阅可选参数)是否合适。

Xinzhe元

嗨,我得到一个错误:
未定义函数或变量'T1'。

SSICOV/blockHankel错误(第207行)
如果或(任何(isinf (T1(:))),任何(isnan (T1 (:)))),

如果你能看一下,我将不胜感激。

蒂亚戈

MATLAB版本兼容性
创建R2018b
兼容R2014b到R2019b
平台的兼容性
窗户 macOS Linux

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!