
MATLAB环境中基于数据驱动和协方差驱动的随机子空间(SSI-DATA与SSI-COV)结构
模态参数识别方法
## 模态参数识别是个啥?
搞结构健康监测的朋友应该都懂,结构振动响应里藏着它的"身份证"——固有频率、阻尼比、振型这
些模态参数。今天咱们来盘盘两种直接从数据里扒出这些参数的利器:SSI-DATA和SSI-COV。
先看段MATLAB灵魂代码:
```matlab
% 导入振动响应数据
acc_data = load('bridge_acceleration.mat');
% 数据预处理
fs = 100; % 采样频率
data = detrend(acc_data.channels(1:3,:)'); % 去趋势+选通道
```
这段代码干了两件大事:一是加载桥梁加速度数据,二是给数据搓澡(去趋势)。记住,干净的数据是
成功的一半,特别是做协方差计算时,趋势项能把结果带沟里去。
## SSI-COV:协方差狂魔
协方差驱动的SSI路子野,直接拿数据协方差开刀。看它的核心操作:
```matlab
% 计算协方差矩阵
cov_matrix = cov(data);
% 构建Hankel矩阵
block_rows = 20; % 块行数
H = hankel(cov_matrix(1:block_rows,:), cov_matrix(block_rows:end,:));
% SVD分解
[U,S,V] = svd(H,'econ');
```
这里有几个门道:Hankel矩阵的构造直接影响模态阶数判断,svd的'econ'模式能省内存。做完这些
,奇异值曲线会出现断崖式下跌,那个拐点就是咱要找的系统阶次。
## SSI-DATA:原始数据硬刚