songzy41 发表于 2008-5-19 16:07

原帖由 vivid920 于 2008-5-19 11:39 发表 http://www.chinavib.com/forum/images/common/back.gif
radardata=load('25s.txt' );
X=radardata(1:4096);
XN=X+100*randn(1,4096);

我对某一道加入了这样的噪声
可以知道信噪比么?
如果要知道信噪比,可以
X=radardata(1:4096);
noise=100*randn(1,4096);
XN=X+noise;
要计算出X的功率和noise的功率,把两功率之比,且取成分贝值。

songzy41 发表于 2008-5-19 16:45

原帖由 vivid920 于 2008-5-19 14:33 发表 http://www.chinavib.com/forum/images/common/back.gif
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)
.....
我对y加入了50*randn(1,4096)的噪声,然后用小波默认阈值去噪方法进行去噪,用了上面的代码,但是结果不对,请问是怎么回事?
语句:
for l=1:m1
    y=x(l,:)+400*(l-1)+50*randn(1,4096);
    plot(y,n),axis tight; hold on;
end
其中y是1*4096的数组,而不是50*4096的数组,所以不能把它当后者处理。我改后的程序如下,但在zy.txt文件中,排列可能和楼主不一样,但计算方法按楼主的,小波去噪还是有效的。
x=load('zy.txt');
x=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(l,:)=x(l,:)+50*randn(1,4096);
    plot(y(l,:)+400*(l-1),n);
    axis tight; hold on;
end
hold off
figure(2);
y1=zeros(m1,m2);
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,:)+400*(l-1),n);axis tight;
    hold on;
end
hold off
得图有

[ 本帖最后由 songzy41 于 2008-5-19 16:46 编辑 ]

vivid920 发表于 2008-5-19 16:49

原帖由 songzy41 于 2008-5-19 16:07 发表 http://www.chinavib.com/forum/images/common/back.gif

如果要知道信噪比,可以
X=radardata(1:4096);
noise=100*randn(1,4096);
XN=X+noise;
要计算出X的功率和noise的功率,把两功率之比,且取成分贝值。

我算出来是2.2589e+003
换成分贝是多少啊?

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

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


我算出来是2.2589e+003
换成分贝是多少啊?
10*log10(2.2589e+003) =   33.5390

vivid920 发表于 2008-5-19 16:55

原帖由 songzy41 于 2008-5-19 16:45 发表 http://www.chinavib.com/forum/images/common/back.gif

语句:
for l=1:m1
    y=x(l,:)+400*(l-1)+50*randn(1,4096);
    plot(y,n),axis tight; hold on;
end
其中y是1*4096的数组,而不是50*4096的数组,所以不能把它当后者处理。我改后的程序如下,但在zy.txt文 ...

谢谢你,你讲的很详细!有点不明白,y=x(l,:)+400*(l-1)+50*randn(1,4096);
加400*(l-1)是什么意思呢?

vivid920 发表于 2008-5-19 17:03

原帖由 songzy41 于 2008-5-19 16:52 发表 http://www.chinavib.com/forum/images/common/back.gif

10*log10(2.2589e+003) =   33.5390

是哦
谢谢你了
看来这信噪比还算蛮高的啊

vivid920 发表于 2008-5-19 17:17

原帖由 songzy41 于 2008-5-19 16:45 发表 http://www.chinavib.com/forum/images/common/back.gif

语句:
for l=1:m1
    y=x(l,:)+400*(l-1)+50*randn(1,4096);
    plot(y,n),axis tight; hold on;
end
其中y是1*4096的数组,而不是50*4096的数组,所以不能把它当后者处理。我改后的程序如下,但在zy.txt文 ...

我刚才运行了一下
出错了!
??? Error using ==> +
Matrix dimensions must agree.

好像是 y(l,:)=x(l,:)+50*randn(1,4096);这句有问题!咋回事阿?

songzy41 发表于 2008-5-19 18:22

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


谢谢你,你讲的很详细!有点不明白,y=x(l,:)+400*(l-1)+50*randn(1,4096);
加400*(l-1)是什么意思呢?
这一语句是在楼主的程序中,我的程序已把这句改了。加400*(l-1)是为了在作图时,一条线(通道)与下一条线不重叠,能分别看清楚,故在X方向平移了一个量,我取为400。

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

我刚才运行了一下
出错了!
??? Error using ==> +
Matrix dimensions must agree.

好像是 y(l,:)=x(l,:)+50*randn(1,4096);这句有问题!咋回事阿?

我的程序执行没有问题,可能如前所述,文件排列不一样,读入的数组排列也不一样所造成的。你要检查x是50*4096还是4096*50,这样决定randn(1,4096)或randn(4096,1)。

vivid920 发表于 2008-5-19 19:05

原帖由 songzy41 于 2008-5-19 18:22 发表 http://www.chinavib.com/forum/images/common/back.gif

这一语句是在楼主的程序中,我的程序已把这句改了。加400*(l-1)是为了在作图时,一条线(通道)与下一条线不重叠,能分别看清楚,故在X方向平移了一个量,我取为400。


我的程序执行没有问题,可能如前所述,文 ...

我知道了,确实是我们俩原数据排列不一致
我的去掉x=x';就可以了

谢谢了

vivid920 发表于 2008-5-23 11: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 ...

我发现一个问题,就是坐标好像不对,如果我要把横坐标变为0—50(即采样道数),纵坐标从上到下为0—4096(即每道的采样点),该怎么弄啊?
页: 1 [2]
查看完整版本: 雷达数据读入到MATLAB的问题!