%% 提示输入数据和相关函数
fni=input('相关函数-输入文件名:','s');
fid=fopen(fni,'r');%以只读方式打开数据文件
fs=input('请输入信号的采样频率(Hz):');%采样频率
fun=input('请输入分析内容(1-自相关,2-互相关):');
x=load(fni);
fclose(fid);%关闭数据文件
%% 相关函数求解
n=length(x(1,:));%取信号数据长度
t=0:1/fs:(n-1)/fs;
if fun==1
%1-自相关
[a,lags]=xcorr(x(1,:),'none');
else
%2-互相关
[a,lags]=xcorr(x(1,:),x(2,:),'none');
end
%% 绘制时程曲线及相关曲线
%取正频率段的相关函数
y=a(n:2*n-1);
%绘制输入数据的时程曲线图形
subplot(2,1,1);
if fun==1
plot(t,x(1,:),'LineWidth',2);
else
plot(t,x(1,:),':',t,x(2,:),'LineWidth',2);
legend('x','y');
end
grid on;
subplot(2,1,2);
plot(t,y,'LineWidth',2);
grid on;
%% 相关函数结果输出
%fno=input('请输入保存文件名称及后缀:','s');
fno= strcat(fni,'_output.csv');
fid=fopen(fno,'w');%以写的方式打开文件或建立一个新文件
for k=1:n
fprintf(fid,'%f %f\n',t(k),y(k));
end
status=fclose(fid);
MATLAB求解振动数据的相关函数
于 2023-10-10 10:12:15 首次发布