vivid920 发表于 2008-5-18 22:21

雷达数据读入到MATLAB的问题!

大家好,我这里有个问题想请教各位:
我用探地雷达采集了一些数据,用自带的雷达软件读出的wiggle图如下:

从图中可见异常非常的明显!可是当我把数据转换为txt格式后,再在MATLAB里打开得到的是下面的图形:

从图中可见,异常不明显!同样的数据为何有如此大的区别呢?是读取方法的问题吗?读取数据的程序代码如下(是论坛高手们帮助提供的):
clc; fid=fopen('zy.txt');
m=4096; a2=fscanf(fid,'%f',);
n=size(a2,2); a=zeros(m,n);
for i=1:n, a(:,i)=bin2dec(int2str(a2(:,i))); end
for l=1:n, subplot(1,n,l); plot(a(:,l),1:m); axis off; axis('ij'); end
数据见附件:由于文件太大所以分了四个!

vivid920 发表于 2008-5-18 22:23

请各位大虾们指教!谢谢!:@)

sogooda 发表于 2008-5-18 22:35

上面那个图的横坐标尺度比较小,使得波动看起来比较明显。

songzy41 发表于 2008-5-19 08:37

1,采集来的数据我想是正确的,但在显示上,加以了控制。在0-1之间的峰值与4附近的峰值在量级差了将近几十倍至一百多倍,所以要把在0-1之间的峰值完全显示出来的话,则4附近的峰值就显得很小,就象楼主显示的那样。但如果在显示时把0-1之间的峰值限止在某一范围中,超值部分就截幅(如wiggle图所示),则就能把4附近的峰值突显出来。

2,读入.txt文件不必怎么复杂,可用
x1=load('zy1-13.txt');
x2=load('zy14-26.txt');
x3=load('zy27-39.txt');
x4=load('zy40-50.txt');
x=;

vivid920 发表于 2008-5-19 09:18

原帖由 sogooda 于 2008-5-18 22:35 发表 http://www.chinavib.com/forum/images/common/back.gif
上面那个图的横坐标尺度比较小,使得波动看起来比较明显。

那请问该如何调整横坐标呢?

vivid920 发表于 2008-5-19 09:21

原帖由 songzy41 于 2008-5-19 08:37 发表 http://www.chinavib.com/forum/images/common/back.gif
1,采集来的数据我想是正确的,但在显示上,加以了控制。在0-1之间的峰值与4附近的峰值在量级差了将近几十倍至一百多倍,所以要把在0-1之间的峰值完全显示出来的话,则4附近的峰值就显得很小,就象楼主显示的那样。但 ...

用你的方法读取的数据是这样的:

vivid920 发表于 2008-5-19 09:23

原帖由 songzy41 于 2008-5-19 08:37 发表 http://www.chinavib.com/forum/images/common/back.gif
1,采集来的数据我想是正确的,但在显示上,加以了控制。在0-1之间的峰值与4附近的峰值在量级差了将近几十倍至一百多倍,所以要把在0-1之间的峰值完全显示出来的话,则4附近的峰值就显得很小,就象楼主显示的那样。但 ...

我主要是想把4附近的峰值显出来,你能告诉我该怎么做吗?谢谢!

vivid920 发表于 2008-5-19 09:38



我选了某一道数据,上图是没有改变坐标所得到的波形,下图是改变纵坐标所得到的波形,下图异常显示的很明显,但是0-500附近的采样点的值不能完全显示,有没有同时兼顾的方法呢?

songzy41 发表于 2008-5-19 09:47

按我的截幅,程序如下,
x1=load('zy1-13.txt');
x2=load('zy14-26.txt');
x3=load('zy27-39.txt');
x4=load('zy40-50.txt');
x=;
=size(x);
for l=1:m1
    for k=1:m2;
      if x(l,k)>1000
            x(l,k)=1000;
      elseif x(l,k)<-1000
            x(l,k)=-1000;
      end
    end
end
n=m2:-1:1;
for l=1:m1
    y=x(l,:)+400*(l-1);
    plot(y,n); hold on;
end
hold off   
得到的图有

songzy41 发表于 2008-5-19 09:52

原帖由 vivid920 于 2008-5-19 09:38 发表 http://www.chinavib.com/forum/images/common/back.gif
34839

我选了某一道数据,上图是没有改变坐标所得到的波形,下图是改变纵坐标所得到的波形,下图异常显示的很明显,但是0-500附近的采样点的值不能完全显示,有没有同时兼顾的方法呢?
就象我在4楼指出的,“在0-1之间的峰值与4附近的峰值在量级差了将近几十倍至一百多倍”,要同时兼顾很难,要兼顾,必然使4附近的峰值看不清楚,而且wiggle图中本身也是截幅后画的。

vivid920 发表于 2008-5-19 10:00

原帖由 songzy41 于 2008-5-19 09:47 发表 http://www.chinavib.com/forum/images/common/back.gif
按我的截幅,程序如下,
x1=load('zy1-13.txt');
x2=load('zy14-26.txt');
x3=load('zy27-39.txt');
x4=load('zy40-50.txt');
x=;
=size(x);
for l=1:m1
    for k=1:m2;
      i ...

非常感谢你!如果我要对每一道加一定信噪比的噪声呢,该如何加啊?我尝试加过但是总觉得不对,不是我想要的效果!你能告诉我吗?

songzy41 发表于 2008-5-19 10:59

你不妨试试,用awgn函数来加噪声。

vivid920 发表于 2008-5-19 11:07

原帖由 songzy41 于 2008-5-19 10:59 发表 http://www.chinavib.com/forum/images/common/back.gif
你不妨试试,用awgn函数来加噪声。

我用这个函数加了
可是好像效果不好
是不是我用的方法不对呢
比如说我要加个信噪比我10的噪声
是不是y=awgn(x,10)

vivid920 发表于 2008-5-19 11:39

radardata=load('25s.txt' );
X=radardata(1:4096);
XN=X+100*randn(1,4096);

我对某一道加入了这样的噪声
可以知道信噪比么?

vivid920 发表于 2008-5-19 14:33

x=load('zy.txt');
=size(x);
for l=1:m1
    for k=1:m2;
      if x(l,k)>1000
            x(l,k)=1000;
      elseif x(l,k)<-1000
            x(l,k)=-1000;
      end
    end
end
n=m2:-1:1;
for l=1:m1
    y=x(l,:)+400*(l-1)+50*randn(1,4096);
    plot(y,n),axis tight; hold on;
end
hold off
figure(2);
y1=zeros(m2,m1);
for b=1:m1
    =wavedec(y(:,b),3,'sym4'); %分解原始雷达信号
    =ddencmp('den','wv',y(:,b));
    y1(:,b)=wdencmp('gbl',c,l,'db1',3,thr,sorth,keepapp);
end
for l=1:m1
    plot(y1(:,l),n);axis tight;
    hold on;
end
hold off

我对y加入了50*randn(1,4096)的噪声,然后用小波默认阈值去噪方法进行去噪,用了上面的代码,但是结果不对,请问是怎么回事?
页: [1] 2
查看完整版本: 雷达数据读入到MATLAB的问题!