声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: vivid920

[综合讨论] 雷达数据读入到MATLAB的问题!

[复制链接]
发表于 2008-5-19 16:07 | 显示全部楼层

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

使用道具 举报

发表于 2008-5-19 16:45 | 显示全部楼层
原帖由 vivid920 于 2008-5-19 14:33 发表
x=load('zy.txt');
[m1,m2]=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';
[m1,m2]=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
    [c,l]=wavedec(y(b,:),3,'sym4'); %分解原始雷达信号
    [thr,sorth,keepapp]=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 编辑 ]

加噪后的信号

加噪后的信号

小波滤波后的信号

小波滤波后的信号

评分

1

查看全部评分

 楼主| 发表于 2008-5-19 16:49 | 显示全部楼层
原帖由 songzy41 于 2008-5-19 16:07 发表

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


我算出来是2.2589e+003
换成分贝是多少啊?
发表于 2008-5-19 16:52 | 显示全部楼层
原帖由 vivid920 于 2008-5-19 16:49 发表


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

10*log10(2.2589e+003) =   33.5390
 楼主| 发表于 2008-5-19 16:55 | 显示全部楼层
原帖由 songzy41 于 2008-5-19 16:45 发表

语句:
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)是什么意思呢?
 楼主| 发表于 2008-5-19 17:03 | 显示全部楼层
原帖由 songzy41 于 2008-5-19 16:52 发表

10*log10(2.2589e+003) =   33.5390


是哦
谢谢你了
看来这信噪比还算蛮高的啊
 楼主| 发表于 2008-5-19 17:17 | 显示全部楼层
原帖由 songzy41 于 2008-5-19 16:45 发表

语句:
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);这句有问题!咋回事阿?
发表于 2008-5-19 18:22 | 显示全部楼层
原帖由 vivid920 于 2008-5-19 16:55 发表


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

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

原帖由 vivid920 于 2008-5-19 16:55 发表

我刚才运行了一下
出错了!
??? 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)。
 楼主| 发表于 2008-5-19 19:05 | 显示全部楼层
原帖由 songzy41 于 2008-5-19 18:22 发表

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


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


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

谢谢了
 楼主| 发表于 2008-5-23 11:00 | 显示全部楼层
原帖由 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=[x1; x2; x3; x4];
[m1,m2]=size(x);
for l=1:m1
    for k=1:m2;
        i ...


我发现一个问题,就是坐标好像不对,如果我要把横坐标变为0—50(即采样道数),纵坐标从上到下为0—4096(即每道的采样点),该怎么弄啊?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-29 00:38 , Processed in 0.087401 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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