高斯信号.docx

上传人:b****5 文档编号:14274829 上传时间:2023-06-22 格式:DOCX 页数:13 大小:93.87KB
下载 相关 举报
高斯信号.docx_第1页
第1页 / 共13页
高斯信号.docx_第2页
第2页 / 共13页
高斯信号.docx_第3页
第3页 / 共13页
高斯信号.docx_第4页
第4页 / 共13页
高斯信号.docx_第5页
第5页 / 共13页
高斯信号.docx_第6页
第6页 / 共13页
高斯信号.docx_第7页
第7页 / 共13页
高斯信号.docx_第8页
第8页 / 共13页
高斯信号.docx_第9页
第9页 / 共13页
高斯信号.docx_第10页
第10页 / 共13页
高斯信号.docx_第11页
第11页 / 共13页
高斯信号.docx_第12页
第12页 / 共13页
高斯信号.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

高斯信号.docx

《高斯信号.docx》由会员分享,可在线阅读,更多相关《高斯信号.docx(13页珍藏版)》请在冰点文库上搜索。

高斯信号.docx

高斯信号

亚高斯信号,高斯信号,超高斯信号

一个信号的高斯性是通过其峭度定义的。

在信号x的均值为零的条件下,其峭度定义如下:

kurt(x)=E{x^4}-3[E{x^2}]^2

          <0次高斯信号

kurt(x)=0  高斯信号

          >0超高斯信号

当我们拿到任意信号x的一个样本后,可通过如下的计算求其峭度,进而判断高斯性:

假设x是1*N的行向量

x=x-mean(x)*ones(1,N)%去均值

KurtX=mean(x.^4)-3*(mean(x.^2))^2%求峭度

   均匀分布的信号是次高斯信号,拉普拉斯分布的信号是超高斯信号。

语音信号是超高斯信号。

根据中心极限定理的意义,N个不同分布信号的联合分布有高斯化的趋势,所以信号的非高斯性是盲分离一个很好的优化判据。

另外,在脑电信号处理中,由于一般脑电信号、肌电伪差及工频干扰等多属于亚高斯信号,而心电伪差和眨眼伪差等则多属于超高斯信号。

基本原理是独立元分析(ICA),它被看作是主元分析(PCA)的扩展。

其差别在于,主元分析只利用了观察数据的二阶统计量且要求各分量正交,而独立元分析利用了观察数据的高阶统计量且要求各分量统计独立。

对于高斯分布的信号,二阶统计量足以描述其特性,但是对于通信系统中典型的通信信号,其分布通常是欠高斯的,所以二阶统计量不足以描述其特性,必须用高阶统计量描述其特性。

系统的基本方程是:

解混的判据是使辅助输出

的信息熵

极大。

%读入混合前的原始图片并显示

I1=imread('input1.jpg');

I2=imread('input2.jpg');

I3=imread('input3.jpg');

I1=rgb2gray(I1);

I2=rgb2gray(I2);

I3=rgb2gray(I3);

subplot(4,3,1),imshow(I1),title('输入图像1'),

subplot(4,3,2),imshow(I2),title('输入图像2'),

subplot(4,3,3),imshow(I3),title('输入图像3'),

%计算图片数据的维数

[x1,y1,z1]=size(I1);

[x2,y2,z2]=size(I2);

[x3,y3,z3]=size(I3);

%将其重新排列为一维行向量并组成矩阵

s1=[reshape(I1,[1,x1*y1*z1])];

s2=[reshape(I2,[1,x2*y2*z2])];

s3=[reshape(I3,[1,x3*y3*z3])];

S_all=[s1;s2;s3];%图片个数即为变量数,图片的像素数即为采样数

%因此S_all是一个变量个数*采样个数的矩阵

S=double(S_all);%将图像数据转换为双精度格式

Sweight=rand(size(S_all,1));%取一随机矩阵,作为信号混合的权矩阵

MixedS=Sweight*S;%得到三个图像的混合信号矩阵

%将混合矩阵重新排列为原始的图片矩阵并输出

ms1=reshape(MixedS(1,:

),[x1,y1,z1]);

ms2=reshape(MixedS(2,:

),[x2,y2,z2]);

ms3=reshape(MixedS(3,:

),[x3,y3,z3]);

I1_mixed=uint8(round(ms1));

I2_mixed=uint8(round(ms2));

I3_mixed=uint8(round(ms3));

subplot(4,3,4),imshow(I1_mixed),title('混合图像1'),

subplot(4,3,5),imshow(I2_mixed),title('混合图像2'),

subplot(4,3,6),imshow(I3_mixed),title('混合图像3'),

MixedS_bak=MixedS;%将混合后的数据备份,以便在恢复时直接调用

%%%%%%%%%%%%%%%%%%%%%%%%%%标准化%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

MixedS_mean=zeros(3,1);

fori=1:

3

MixedS_mean(i)=mean(MixedS(i,:

));

end%计算MixedS的均值与方差

fori=1:

3

forj=1:

size(MixedS,2)

MixedS(i,j)=MixedS(i,j)-MixedS_mean(i);

end

end

%%%%%%%%%%%%%%%%%%%%%%%%%%%白化%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

MixedS_cov=cov(MixedS');%cov为求协方差的函数

[E,D]=eig(MixedS_cov);%对图片矩阵的协方差函数进行特征值分解

Q=inv(sqrt(D))*(E)';%Q为白化矩阵

MixedS_white=Q*MixedS;%MixedS_white为白化后的图片矩阵

IsI=cov(MixedS_white');%IsI应为单位阵

%%%%%%%%%%%%%%%%%%%%%%%% FASTICA算法%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

X=MixedS_white;%以下算法将对X进行操作

[VariableNum,SampleNum]=size(X);

numofIC=VariableNum;%在此应用中,独立元个数等于变量个数

B=zeros(numofIC,VariableNum);%初始化列向量b的寄存矩阵,B=[b1,b2,...,bd]

forr=1:

numofIC%迭代求取每一个独立元

i=1;maxIterationsNum=150;%设置最大迭代次数(即对于每个独立分量而言迭代均不超过此次数)

b=2*(rand(numofIC,1)-.5);%随机设置b初值

b=b/norm(b);%对b标准化

whilei=maxIterationsNum+1

ifi==maxIterationsNum%循环结束处理

fprintf('\n第%d分量在%d次迭代内并不收敛。

',r,maxIterationsNum);

break;

end

bOld=b;%初始化前一步b的寄存器

u=1;

t=X'*b;

g=t.^3;

dg=3*t.^2;

b=((1-u)*t'*g*b+u*X*g)/SampleNum-mean(dg)*b;

%核心公式,参见理论部分公式2.52

b=b-B*B'*b;%对b正交化

b=b/norm(b);

ifabs(abs(b'*bOld)-1)<1e-9%如果收敛,则

B(:

r)=b;%保存所得向量b

break;

end

i=i+1;

end

end

%%%%%%%%%%%%%%%%%%%%%%%%%%数据复原并构图%%%%%%%%%%%%%%%%%%%%%%%%%%

ICAedS=B'*Q*MixedS_bak;%参见理论部分公式2.55

ICAedS_bak=ICAedS;

ICAedS=abs(55*ICAedS);

%t1=ICAedS(1,:

);

%t2=ICAedS(2,:

);

%t3=ICAedS(3,:

);

%

%fori=1:

size(t1,2)

%t1(1,i)=t1(1,i)+abs(min(t1));

%t1(1,i)=t1(1,i)*256/(max(t1)-min(t1));

%t2(1,i)=t2(1,i)+abs(min(t2));

%t2(1,i)=t2(1,i)*256/(max(t2)-min(t2));

%t3(1,i)=t3(1,i)+abs(min(t3));

%t3(1,i)=t3(1,i)*256/(max(t3)-min(t3));

%

%end

%

%ICAedS(1,:

)=t1;

%ICAedS(2,:

)=t2;

%ICAedS(3,:

)=t3;

%将计算后的混合矩阵重新排列为图片矩阵并输出

is1=reshape(ICAedS(1,:

),[x1,y1,z1]);

is2=reshape(ICAedS(2,:

),[x2,y2,z2]);

is3=reshape(ICAedS(3,:

),[x3,y3,z3]);

I1_icaed=uint8(round(is1));

I2_icaed=uint8(round(is2));

I3_icaed=uint8(round(is3));

subplot(4,3,7),imshow(I1_icaed),title('ICA解混图像1'),

subplot(4,3,8),imshow(I2_icaed),title('ICA解混图像2'),

subplot(4,3,9),imshow(I3_icaed),title('ICA解混图像3'),

%%%%%%%%%%%%%%%%%%%%%%%%%%PCA计算并构图%%%%%%%%%%%%%%%%%%%%%%%%%%

[V,D]=eig(MixedS_cov);

Vtmp=zeros(size(V,1),1);

forj=1:

2

fori=1:

2

ifD(i,i)

tmp=D(i,i);Vtmp=V(:

i);

D(i,i)=D(i+1,i+1);V(:

i)=V(:

i+1);

D(i+1,i+1)=tmp;V(:

i+1)=Vtmp;

end

end

end

t1=(MixedS'*V(:

1))';

t2=(MixedS'*V(:

2))';

t3=(MixedS'*V(:

3))';

fori=1:

size(t1,2)%亮度调整

t1(1,i)=t1(1,i)+abs(min(t1));

t1(1,i)=t1(1,i)*256/(max(t1)-min(t1));

t2(1,i)=t2(1,i)+abs(min(t2));

t2(1,i)=t2(1,i)*256/(max(t2)-min(t2));

t3(1,i)=t3(1,i)+abs(min(t3));

t3(1,i)=t3(1,i)*256/(max(t3)-min(t3));

end

%%%%%%%%%%%%%%%%%%%%%%%构图%%%%%%%%%%%%%%%%%%%%%%

ts1=reshape(t1,[x1,y1,z1]);

ts2=reshape(t2,[x2,y2,z2]);

ts3=reshape(t3,[x3,y3,z3]);

T1_icaed=uint8(round(ts1));

T2_icaed=uint8(round(ts2));

T3_icaed=uint8(round(ts3));

subplot(4,3,10),imshow(T1_icaed),title('PCA解混图像1'),

subplot(4,3,11),imshow(T2_icaed),title('PCA解混图像2'),

subplot(4,3,12),imshow(T3_icaed),title('PCA解混图像3'),

%%%%%%%%%%%%%%%%%%%%%%%%%%输出一维矢量图%%%%%%%%%%%%%%%%%%%%%%%%%%

%subplot(3,3,1),plot(S(1,:

)),title('输入图像1一维矢量图')

%subplot(3,3,2),plot(S(2,:

)),title('输入图像2一维矢量图')

%subplot(3,3,3),plot(S(3,:

)),title('输入图像3一维矢量图')

%subplot(3,3,4),plot(ICAedS(1,:

)),title('ICA解混图像1一维矢量图')

%subplot(3,3,5),plot(ICAedS(2,:

)),title('ICA解混图像2一维矢量图')

%subplot(3,3,6),plot(ICAedS(3,:

)),title('ICA解混图像3一维矢量图')

%subplot(3,3,7),plot(t1),title('PCA解混图像1一维矢量图')

%subplot(3,3,8),plot(t2),title('PCA解混图像2一维矢量图')

%subplot(3,3,9),plot(t3),title('PCA解混图像3一维矢量图')

im=imread(imgname);

im=rgb2gray(im);

imnoise_1=imnoise(im,'speckle',1);

imnoise_1=uint8(imnoise_1);

g2=size(imnoise_1);

figure

(2)imshow(imnoise_1);

title('Noiseimage');

imnoise_2=double(imnoise_1);

imnoise_3=imnoise_2+var;

imnoise_3=log(imnoise_3);

immoise_3=double(imnoise_3);

imnoise_4=exp(imnoise_3);

imnoise_4=imnoise_4-var;

imnoise_5=uint8(imnoise_4);

figure(5)imshow(imnoise_5)title('recoveryspeckleimage');

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2