声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3327|回复: 4

[综合] 求助 用matlab分析一组信号数据 关于相位差的问题

[复制链接]
发表于 2011-9-5 09:03 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 landzenki 于 2011-9-5 09:06 编辑

分析一组表面波数据,但本身不是学信号的,突然接到这个任务,
自己的相关的信号和matlab知识都是零基础,自学了很久也没有进展,还望指点啊 急死我了
这是我写的编码,完全不知道写的对不对啊

clear all; close all;
%data testing

m=xlsread('E:\test\test1.xlsx'); %读取数据
L=length(m); % 数据长度 (4096个)
fs=L/m(L,1); %采样频率 (数据采集时间约 0.006552s)
n=0:L-1;
f=n*fs/L; %频率域坐标序列
D=0.3;%两接收器间距0.3米

%Definition of signal x(n)
t1=m(:,1);%time
x1=m(:,3);%accelerometer1
x2=m(:,4);%accelerometer2
x3=m(:,2);%force
figure(1);
subplot(221);plot(t1,x1);grid on
title('accelerometer1');
subplot(223);plot(t1,x2);grid on
title('accelerometer2');
subplot(222);plot(t1,x3);
title('force');

时域.png

%Fourier transformation
figure(2)
Y1=fft(x1);
%Y1=Y1(Y1>5);
mag=abs(Y1)/(L/2); %real amplitude
subplot(211);plot(f(1:L/2),mag(1:L/2));grid on %unilateral spectrum
title('frequency domain y1')
xlabel('Frequency(Hz)');
ylabel('Amplitude');
Y2=fft(x2);
mag=abs(Y2)/(L/2);
subplot(212);plot(f(1:L/2),mag(1:L/2));grid on
title('frequency domain y2')
xlabel('Frequency(Hz)');
ylabel('Amplitude');

频域.png

%phase
figure(3)
phase1=angle(Y1);
phase11=mod(phase1*180/pi,360);
subplot(211);plot(f(1:L/2),phase1(1:L/2));grid on;
title('phase y1');
xlabel('Frequency(Hz)');
ylabel('Phase');
phase2=angle(Y2);
phase22=mod(phase2*180/pi,360);
subplot(212);plot(f(1:L/2),phase1(1:L/2));grid on
title('phase y2');
xlabel('Frequency(Hz)');
ylabel('Phase');

这个图看起来很乱啊

相位.png


%unwrap phase
figure(4)
p1=unwrap(phase1);
subplot(121);plot(f(1:L/2),p1(1:L/2));grid on
title('p1');
p2=unwrap(phase2);
subplot(122);plot(f(1:L/2),p2(1:L/2));grid on;
title('p2');

解卷之后的下图,是不是只有那段平滑的斜线才有分析价值?如果是的话,如何删掉没有用的数据呢?方便后面的分析

解卷相位.png


%cross power spectrum
figure(5)
PYY=conj(Y1).*Y2;
subplot(121);plot(f(1:L/2),PYY(1:L/2));
xlabel('Frequency(Hz)');
ylabel('PSD');
title('cross power spectrum');
p=p1-p2;
tf=p'./(f*2*pi); %travel time
V=D./tf; %phase velocity
W=V./f; %wave length
subplot(122);plot(V,W,'*');
axis ij
title('phase velocity-wavelength curve');
xlabel('phase velocity(m/s)');
ylabel('wave length(m)');

功率谱和相谱.png

相关文献中做出的结果如下图,和上图右边那个相比差了好多

Pfinal.jpg

图有些不清楚,不知道怎么弄啊  只好把我截取下来的图和编码打成一个压缩包顺便发上来了
图和编码.rar (66.86 KB, 下载次数: 8)

谢谢大家



本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

 楼主| 发表于 2011-9-5 14:54 | 显示全部楼层
自己顶一下……高手来指点呀!
 楼主| 发表于 2011-9-5 21:43 | 显示全部楼层
555  没人来呢 自己顶起  
截至目前自己研究的结果仍毫无进展  
发表于 2011-9-14 09:25 | 显示全部楼层
能不能先介绍下背景呢?看起来是测传函,是想得到固有频率再计算其他东西吗?
 楼主| 发表于 2011-9-14 16:51 | 显示全部楼层
回复 4 # yangzj 的帖子

背景怎么讲呢,是有关测量混凝土内部结构的,但基本用到的都是信号分析,简单的说是在 用重物击打某一个定点“x”,在距离“x”点 长度D和2D的位置设置2个信号接收器。
得到的原始数据是与时间有关的
做fft后可以大致了解信号频率,幅度等数据
解卷那部分不知道有没有实质作用,目前只是做出来看一看
这个例子里 根据频率幅度谱,得知主要针对频率小于(0.5*10^5)hz的那部分数据,求取相位差
进而通过相位差和2信号接收器的间距,求出不同频率成分的传播时间
再求出表面波速度和波长,做出表面波速-波长的图

简单说是 这个信号含有很多频率,要求除每种频率成分的相位差-->相速度-->波长  

不同波长的表面波传播深度是不同的,之后用这个图对比数据库中 理想样本的表面波速-波长图,分析实际被测结构内部缺陷的位置

例如附件中最后一个图 波长在0.3m-0.4m之间出现了断点,内部结构为这部分波长所能传播的深度部分 是有缺陷的

最近还有新发现的问题,之间看文献中给出的是图是phase velocity/wave lenght
这个应该是相速度-波长的关系

可是文献中提到的方法,最后求出的图叫 surface wave velocity- wave length 这个应该是表面波速度-波长关系图 有点迷惑

另外相位差是在-pi 至 pi之间的,如果不解卷的话,用phase difference/(f*2*pi),得到的不一定是正确的传播时间,因为phase difference 可能是theta+2*k*pi

但解卷之后,求出的相位差出奇的大,初步考虑是对无意义数据也进行了解卷绕,每次都增加2*pi的原因,目前还不知道如何解决。

现在看来整个程序都存在不少问题,我这半路出家的和尚,有时候要发现并修正一个很小的语句错误都要很久……再有些根本不知道错在哪里  相当的头大。0基础起步,这个程序从开始学习matlab,到研究基本的信号分析,和表面波分析,写到这一步都花了小半年了  还是没个成果……相当的受打击……


您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-11 08:14 , Processed in 0.078155 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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