%NExt法(自然激励技术法)模态参数识别预处理
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear
clc
close all hidden
format long
%%%%%%%%%%%%%%%%%%%%%%%%
[DATAfile,DATApath]=uigetfile('*.txt','Input Signal File');
%watchon;
FILENAME=[DATApath,DATAfile];
if ~ischar(FILENAME)
msgbox('Please Input Signal File!','Modal Paraters Identification Based EMD Method','modal');
return;
end
fni=FILENAME%input('input data file name:','s');
fid=fopen(fni,'r');
sf=50;%采样频率
np=2000; %输出数据长度
fno='next.txt'; %输出数据文件名
b=fscanf(fid,'%f',[2,inf]);
status=fclose(fid);
%将输入数据的第一列赋值给x
x=b(1,:);
%将输入数据的第2列赋值给y
y=b(2,:);
%建立离散输出时间向量
t=0:1/sf:(np-1)/sf;
%建立FFT长度
nfft=2^nextpow2(2*np);
%计算互功率谱
p=csd(x,y,nfft);
%建立负频率段的功率谱
p(nfft/2+1)=real(p(nfft/2));
p(nfft/2+2:nfft)=conj(p(nfft/2:-1:2));
%IFFT变换
g=ifft(p);
%按要求时间长度取IFFT变换的实部为互相关函数
r=real(g(1:np));
%绘制互相关时程曲线图
plot(t,r);
xlabel('时间(s)');
ylabel('幅值');
grid on;
fid=fopen(fno,'w');
for k=1:np
fprintf(fid,'%f\r',r(k));
end
status=fclose(fid);