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的功率,把两功率之比,且取成分贝值。 原帖由 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 编辑 ] 原帖由 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
换成分贝是多少啊? 原帖由 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 原帖由 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)是什么意思呢? 原帖由 songzy41 于 2008-5-19 16:52 发表 http://www.chinavib.com/forum/images/common/back.gif
10*log10(2.2589e+003) = 33.5390
是哦
谢谢你了
看来这信噪比还算蛮高的啊 原帖由 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);这句有问题!咋回事阿? 原帖由 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)。 原帖由 songzy41 于 2008-5-19 18:22 发表 http://www.chinavib.com/forum/images/common/back.gif
这一语句是在楼主的程序中,我的程序已把这句改了。加400*(l-1)是为了在作图时,一条线(通道)与下一条线不重叠,能分别看清楚,故在X方向平移了一个量,我取为400。
我的程序执行没有问题,可能如前所述,文 ...
我知道了,确实是我们俩原数据排列不一致
我的去掉x=x';就可以了
谢谢了 原帖由 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]