✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab完整代码及仿真定制内容点击👇
🔥 内容介绍
在结构工程领域,了解和分析结构的模态参数对于评估结构的健康状况和性能至关重要。传统上,模态参数的识别通常需要进行大量的实验测量和复杂的数据处理。然而,随着技术的不断发展,一种新的算法——SSI-COV算法,为自动识别线状结构的模态参数提供了一种更高效和准确的方法。
SSI-COV算法是基于结构系统辨识(SSI)理论的一种方法,它利用环境振动数据来识别结构的模态参数。该算法通过将结构的动力响应与环境激励信号进行相关分析,从而提取出结构的模态参数,如固有频率、阻尼比和模态形态等。
与传统的模态识别方法相比,SSI-COV算法具有以下几个优势。首先,它不需要进行额外的激励实验,只需要利用结构在自然环境中的振动响应数据即可。这样可以大大减少实验的时间和成本。其次,该算法能够自动识别多个模态参数,而无需人工干预。这对于复杂的结构系统来说尤为重要,因为它们可能具有多个模态。
在使用SSI-COV算法进行模态参数识别时,需要注意一些关键的步骤。首先,需要对环境振动数据进行预处理,包括滤波和去噪等。然后,需要选择合适的相关函数来计算结构的动力响应与激励信号之间的相关性。最后,通过对相关函数进行特征提取和模型拟合,可以得到结构的模态参数。
虽然SSI-COV算法在模态参数识别方面具有许多优势,但也存在一些局限性。首先,该算法对环境振动数据的质量要求较高,需要保证数据的准确性和完整性。其次,该算法对结构的线性特性有一定的假设,因此在应用于非线性结构时可能会出现一些误差。
综上所述,SSI-COV算法是一种有效的方法,可用于自动识别线状结构的模态参数。它可以减少实验的时间和成本,并提供准确和全面的模态参数信息。然而,在实际应用中,我们仍然需要根据具体情况选择合适的算法和方法,以确保模态参数的准确性和可靠性。
📣 部分代码
function [h] = plotStabDiag(fn,Az,fs,stablity_status,Nmin,Nmax)
% -------------------------------------------------------------------------
% [h] = plotStabDiag(fn,Az,fs,stablity_status,Nmin,Nmax) plots the
% stabilization diagram of the identified eigen frequencies as a function
% of the model order, calculated with the SSI-COV method.
% -------------------------------------------------------------------------
% Input:
% fn: cell : eigen frequencies identified for multiple system orders.
% Az : vector: Time serie of acceleration response (illustrative purpose)
% fs: sampling frequency
% stablity_status: cell of stability status for each model order
% Nmin: scalar: minimal number of model order
% Nmax: scalar: maximal number of model order
% Output: h: handle of the figure
% -------------------------------------------------------------------------
% See also: SSICOV.m
% -------------------------------------------------------------------------
% Author: Etienne Cheynet, UIS
% Updated on: 08/03/2016
% -------------------------------------------------------------------------
Npoles =Nmin:1:Nmax;
[Saz,f]=pwelch(Az,[],[],[],fs);
h = figure;
ax1 = axes;
hold on;box on
for jj=0:4,
y = [];
x = [];
for ii=1:numel(fn)
ind = find(stablity_status{ii}==jj);
x = [x;fn{ii}(ind)'];
y = [y;ones(numel(ind),1).*Npoles(ii)];
end
x1{jj+1}=x;
y1{jj+1}=y;
end
h1=plot(x1{1},y1{1},'k+','markersize',5);% new pole
h2=plot(x1{2},y1{2},'ko','markerfacecolor','r','markersize',5); % stable pole
h3=plot(x1{3},y1{3},'bo','markersize',5); % pole with stable frequency and vector
h4=plot(x1{4},y1{4},'gsq','markersize',5); % pole with stable frequency and damping
h5=plot(x1{5},y1{5},'gx','markersize',5); % pole with stable frequency
if isempty(h1), h1=0;
elseif isempty(h2), h2=0;
elseif isempty(h3), h3=0;
elseif isempty(h4), h4=0;
elseif isempty(h5), h5=0;
end
H = [h1(1),h2(1),h3(1),h4(1),h5(1)];
legend(H,...
'new pole',...
'stable pole',...
'stable freq. & MAC',...
'stable freq. & damp.',...
'stable freq.',...
'location','Northoutside','orientation','horizontal');
ylabel('number of poles');
xlabel('f (Hz)')
xlim([0,max([fn{:}])*1.1])
hold off
ax2 = axes('YAxisLocation', 'Right');
linkaxes([ax1,ax2])
plot(ax2,f,Saz./max(Saz).*0.001,'k');
ax2.YLim = [0,Nmax];
ax2.XLim = [0,max([fn{:}])*1.1];
set(ax2,'yscale','log')
ax2.Visible = 'off';
ax2.XTick = [];
ax2.YTick = [];
set(gcf,'color','w')
end
⛳️ 运行结果
🔗 参考文献
[1] Magalhaes, F., Cunha, A., & Caetano, E. (2009). Online automatic identification of the modal parameters of a long span arch bridge. Mechanical Systems and Signal Processing, 23(2), 316-329.
[2] Cheynet, E., Jakobsen, J. B., & Snæbjörnsson, J. (2016).Buffeting response of a suspension bridge in complex terrain. Engineering Structures, 128, 474-487.
[3] Cheynet, E., Jakobsen, J. B., & Snæbjörnsson, J. (2017).Damping estimation of large wind-sensitive structures.Procedia Engineering, 199, 2047-2053.
[4] Cheynet, E., Snæbjörnsson, J., & Jakobsen, J. B. (2017).Temperature Effects on the Modal Properties of a Suspension Bridge.In Dynamics of Civil Structures, Volume 2 (pp. 87-93). Springer.