声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2159|回复: 2

[声学测量] matlab处理振动的加速度信号

[复制链接]
发表于 2010-5-8 19:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我在做毕业设计,最后一个数据处理模块。我用了王济的程序clear
clc
close all hidden
format long
%s=load('D:\MATLAB7\work\9118\数据文件.txt');
%fni=input('随机信号谱分析-输入数据文件','s');
fid=fopen('D:\data.txt','r');
%分析内容(1=自谱,2=互谱,3=频响函数,4=相干函数)
fun=fscanf(fid,'%d',1);
sf=fscanf(fid,'%f',1);%采样频率
nfft=fscanf(fid,'%d',1);%FFT长度
win=fscanf(fid,'%d',1);
%窗函数(1=矩形,2='%d',1);
fno=fscanf(fid,'%s',1);%输出数据文件名
%按行读入数据,第一行激励,第二行相应
a=fscanf(fid,'%f',[2,inf]);
status=fclose(fid);
%取激励信号向量
x=a(1,:);
%取相对的响应信号向量
y=a(2,:)-a(1,:);
%建立频率向量
f=0:sf/nfft:sf/2-sf/nfft;
%加窗处理
switch win
    case 1 %矩形窗
w=boxcar(nfft);
    case 2 %汉宁窗
w=hanning(nfft);
    case 3%海明窗
w=hamming(nfft);
    case 4%布莱克曼窗
w=blackman(nfft);
    case 5 %三角窗
w=triang(nfft);
otherwise
w=boxcar(nfft);
end
switch fun
case 1 %计算自谱频率
z=psd(y,nfft,sf,w,nfft/2);
case 2 %计算互谱函数
z=csd(x,y,nfft,sf,w,nfft/2);
case 3 %计算频响函数
z=tfe(x,y,nfft,sf,w,nfft/2);
case 4 %计算相干函数
z=cohere(x,y,nfft,sf,w,nfft/2);
    otherwise;
end
nn=1:nfft/4;
subplot(2,1,1);
plot(f(nn),abs(z(nn)));
xlabel('频率(Hz)');
ylabel('幅值');
grid on;
if fun>1&fun<4
%绘制相频曲线图
subplot(2,1,2);
plot(f(nn),angle(z(nn)));
xlabel('频率(Hz)');
ylabel('相位');
grid on;
end
%以写的方式打开文件或建立一个新的文件
fid=fopen(fno,'w');
%输出自谱和相干函数数据
if fun>1&fun<4
for k=1:nfft/2
%每行输出2个实型数据,f为频率,z为幅值
fprintf(fid,'%f%f\n',f(k),abs(z(k)));
end
%输出互谱和频响函数数据
else
for k=1:nfft/2
%每行输出3个实型数据,f为频率,z实部,虚
fprintf(fid,'%f%f%f\n',f(k),real(z(k),imag(z(k))));
end
end
status=fclose(fid);
我的数据是单列的数据,显示的是Error in ==> Untitled2 at 25
switch win
不知道是什么问题,是我数据格式的问题还是王老师的程序哪有问题
回复
分享到:

使用道具 举报

发表于 2010-12-29 23:52 | 显示全部楼层
这个问题 是你的问题  看看a=fscanf(fid,'%f',[2,inf]);  你输入有问题啊
发表于 2011-7-7 11:26 | 显示全部楼层
王济的数据输入代码有问题
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-6 08:46 , Processed in 0.064265 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表