• 大小: 3KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-22
  • 语言: Matlab
  • 标签: ARMA  模态识别  

资源简介

应用ARMA法进行结构模态识别的matlab程序

资源截图

代码片段和文件信息

%ARMA法模态参数识别
%%%%%%%%%%%%%%%%%%%%%
clear
clc
close all hidden
format long
[DATAfileDATApath]=uigetfile(‘zzz.txt‘‘请选择数据文件‘);
FILENAME=[DATApathDATAfile];
if ~ischar(FILENAME)
msgbox(‘请选择数据文件!‘);
return;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fni=FILENAME;%input(‘input data file name:‘‘s‘);
fid=fopen(fni‘r‘);
mn=124;      %模态阶数
%定义输入实测数据类型:
%ig=1 时域数据如冲击响应、自由振动、互相关函数、随机减量法处理结果
%ig=2 频域数据如频响函数实部虚部数据
ig=1;      %定义输入实测数据类型,ig=1(时域数据如冲击响应、自由振动、互相关函数、随机减量法处理结果)ig=2(频域数据如频响函数实部虚部数据)
f=200;       %ig=1时f为采样频率sfig=2时f为频率间隔df
fno=‘jieguo124.txt‘;     %输出数据文件名
b=fscanf (fid‘%f‘[iginf]); %实测时域或频域数据
status=fclose (fid);
%建立ARMA模型的阶数(为模态阶数的2倍)
nm=2*mn;
%组织识别计算所用的时域数据及参数
if ig==1 %实测时域数据
    %取采样频率
    sf=f;
    %取时域数据1/2的长度
    n=fix (length (b) /2);
    %将输入时域数据值给列向量h
    h=b (1 1: 2*n)‘;
    %计算时间间隔
    dt=1/sf;
    %建立离散频率向量
    t=0: dt: (2*n-1) *dt;
else   %实测频域数据
    %频域率间隔
    df=f;
    %取实测频响函数的长度
    n=length (b (1:));
    %建立离散频率向量
    f=0: df: (n-1) *df;
    %建立对应正负频率的实测频响函数向量
    H=b (1:)‘+b (2:)‘*i;
    H (n+1) =real (H (n));
    H (n+2: 2*n) =conj (H (n: -1: 2));
    %频响函数经IFFT并取实部变换成脉冲响应函数
    h=real (ifft (H));
    %建立离散时间向量
    t=linspace (0 1/df 2*n);
    %计算时间间隔
    dt=t(2)-t(1);
end
%时间序列响应拟合的ARMA参数建模
%A和B分别为ARMA模型传递函数的分子和分母系数向量
[A B] =p

评论

共有 条评论