|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
那啥,小弟初学matlab,比较菜
有这样一组数据
0.3987 1.3757 -5.0000 -0.8385
0.3984 1.3759 -5.0000 -0.8220
0.3989 1.3765 -5.0000 -0.7935
0.3986 1.3760 -5.0000 -0.7515
0.3984 1.3759 -5.0000 -0.7213
0.3976 1.3756 -5.0000 -0.7024
0.3973 1.3753 -5.0000 -0.6691
0.3978 1.3756 -5.0000 -0.6296
0.3969 1.3754 -5.0000 -0.5919
... .... ... ...
说明:
1.采样速率20K,k=1000
2.文件长度22K
3.第1,2 列激光位移,第3列是干扰,(忽略)第4列加速度
现在要求用频谱转换法,将加速度转为位移
(算法描述见附件)
下面是我自己用matlab写该算法的实现代码,比较臭
%读取数据
a='d:\1.txt';
data=load(a);
[m,n]=size(data);
%提取加速度,
acce=data(:,4);
XK=fft(acce);
re=real(XK);
im=imag(XK);
%AK=zeros(m,1);
T=1;
for i=1:m
%计算幅值
AK_A(i,1)=sqrt(re(i,1)^2+im(i,1)^2);
%计算初相
PHY_A(i,1)=atan(im(i,1)/re(i,1));
%计算角频率
OMEGA(i,1)=2*pi*i/T;
end
for i=1:m
%计算幅值
AK_D(i,1)=AK_A(i,1)/(OMEGA(i,1)^2);
%计算初相
PHY_D(i,1)=PHY_A(i,1)-pi;
end
%计算位移
%%%%%%%%%%%%%%%%%%
t=1/20000;
%%%%%%%%%%%%%%%%%%
D=zeros(m,1);
D(i,1)=AK_D(i,1)*cos(OMEGA(i,1)*t+PHY_D(i,1));
for i=2:m
D(i,1)=D(i-1,1)+AK_D(i,1)*cos(OMEGA(i,1)*t+PHY_D(i,1));
end
plot(D)
现在的问题是:
1 通过该算法得到的位移D与数据里给出的两列位移都不匹配 (说实话我不太清楚两列位移各表示什么,但我算出来的D却和这两列数据毫无关系)
2.我的算法实现是不是有问题啊
希望达人能帮帮忙
[ 本帖最后由 nwnmrj 于 2008-1-27 00:05 编辑 ] |
-
算法
-
-
1.txt
31.15 KB, 下载次数: 11
数据
|