混沌映射MATLAB仿真

更新时间:2024-03-13 12:49:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

混沌映射(序列)matlab算法“小全”:Logistic、Henon、帐篷、kent(含混沌二值图像生成函数)

1.Logistic(罗切斯特)映射 变换核: xn+1=axn(1?xn) 绘图程序: n=64; key=0.512;

an=linspace(3.1,3.99,400);

holdon;boxon;axis([min(an),max(an),-1,2]); N=n^2; xn=zeros(1,N); fora=an;

x=key; fork=1:20;

x=a*x*(1-x);%产生公式 end; fork=1:N;

x=a*x*(1-x); xn(k)=x;

b(k,1)=x;%一维矩阵记录迭代结果 end;

plot(a*ones(1,N),xn,'k.','markersize',1); end; %figure; %imhist(b) 实用混沌加密函数:

functionichao_ans=ichaos_logistic(varargin) %logistic序列生成算法 %函数名:

%logistic混沌序列生成函数 %参数:

%(n,key),n为矩阵阶数,key为迭代初始值。 %(n),n为矩阵阶数,key=0.600。 %()或(n,key,...),n=64,key=0.600。 Switchnargin;

case1;

n=varargin{1}; key=0.600; case2;

n=varargin{1}; key=varargin{2}; otherwise

key=0.600;

n=64;

end N=n^2; xn=zeros(1,N); a=4;

x=key; fork=1:20;

x=a*x*(1-x);%产生公式

end; fork=1:N;

x=a*x*(1-x);

xn(k)=x;%一维矩阵记录迭代结果

end;

c=reshape(xn,n,n);%一维矩阵转换二维矩阵 d=zeros(n,n); %二维混沌矩阵调制 Fora1=1:n;

Fora2=1:n; ifc(a1,a2)>=0.5; d(a1,a2)=1; elsed(a1,a2)=0; end; end; end;

%figure;title('logistic映射'); %imshow(d); ichao_ans=d;

2.Henon(埃农)映射

+1=yn+1?ax变换核: { xynn2 n+1=bxn 绘图程序: a∈(0,1.4)

0.2

fora=0:0.001:1.4

fork=1:N;

xm=x; ym=y;

x=ym+1-a*xm.*xm; y=b*xm; end xn(1)=x; forn=2:N;

xm=x; ym=y;

x=ym+1-a*xm.*xm; y=b*xm; xn(n)=x; end

plot(an*a,xn,'k.','markersize',1); end xlim([0,a]);

实用混沌加密函数:

functionichao_ans=ichaos_henon(varargin) %埃农(Henon)映射

%0.2

%(n,key),n为矩阵阶数,key为迭代初始值。 %(n),n为矩阵阶数,key=0.314。 %()或(n,key,...),n=64,key=0.314。

switchnargin;

case1;

n=varargin{1}; key=0.314;

case2;

n=varargin{1}; key=varargin{2};

otherwise

key=0.314; n=64;

end n=64; N=n^2; an=ones(1,N); xn=zeros(1,N); x=0; y=0; a=1.4;

forcir1=1:N;

xm=x; ym=y;

x=ym+1-a*xm.*xm; y=key*xm; end xn(1)=x; forcir2=2:N;

xm=x; ym=y;

x=ym+1-a*xm.*xm; y=key*xm; xn(cir2)=x; end

c=reshape(xn,n,n);%一维矩阵转换二维矩阵 d=zeros(n,n); %二维混沌矩阵调制 Fora1=1:n;

Fora2=1:n; ifc(a1,a2)>=0; d(a1,a2)=1; elsed(a1,a2)=0; end; end; end;

ichao_ans=d;

3.帐篷映射 变换核:

xn+1=a?(1+a)|xn| a∈(0,1) 绘图程序: %帐篷映射 %0

第2 / 4页

%a理想值0.99—1 %0

forn=1:N;

x=a-(1+a)*abs(x);

end fork=1:N;

x=a-(1+a)*abs(x); xp(k)=x;

end

plot(Aa*a,xp,'k.','markersize',1); end xlim([0,a]);

实用混沌加密函数:

functionichao_ans=ichaos_tent(varargin) %帐篷映射 %0

%a理想值0.99—1 %x初值作为密钥 %0

%(n,key),n为矩阵阶数,key为迭代初始值。 %(n),n为矩阵阶数,key=0.99。 %()或(n,key,...),n=64,key=0.99。

switchnargin;

case1;

n=varargin{1}; key=0.99;

case2;

n=varargin{1}; key=varargin{2};

otherwise

key=0.99; n=64;

end N=n^2; xp=zeros(1,N); x=key;

a=0.998;

forcir1=1:N;

x=a-(1+a)*abs(x); end forcir2=1:N;

x=a-(1+a)*abs(x); xp(cir2)=x;

end

c=reshape(xp,n,n);%一维矩阵转换二维矩阵 d=zeros(n,n);%二维混沌矩阵调制 fora1=1:n;

fora2=1:n; ifc(a1,a2)>=0; d(a1,a2)=1; elsed(a1,a2)=0; end; end; end;

%sum(sum(d))ichao_ans=d; %imshow(ichao_ans);

4.kent(肯特)映射

xx,0

绘图程序: %肯特映射 n=20; N=n^2; xp=zeros(1,N); Aa=ones(1,N); x=0.36; holdon;boxon; fora=0.01:0.001:0.5;

forcir1=1:N;

ifx<=a;

第3 / 4页

x=x/a; else

x=(1-x)/(1-a);

end end forcir3=1:N;

ifx<=a; x=x/a; else

x=(1-x)/(1-a);

end xp(cir3)=x; end

plot(Aa*a,xp,'k.','markersize',1); end xlim([0,a]);

实用混沌加密函数:

functionichao_ans=ichaos_kent(varargin) %0.1

%(n,key),n为矩阵阶数,key为迭代初始值。 %(n),n为矩阵阶数,key=0.8。 %()或(n,key,...),n=64,key=0.8。 switchnargin;

case1;

n=varargin{1}; key=0.8;

case2;

n=varargin{1}; key=varargin{2};

otherwise

key=0.8; n=64;

end N=n^2; xp=zeros(1,N); x=key; a=0.4;

forcir1=1:N;

ifx<=a; x=x/a; else

x=(1-x)/(1-a);

end

end forcir3=1:N;

ifx<=a; x=x/a; else

x=(1-x)/(1-a);

end xp(cir3)=x;

end

c=reshape(xp,n,n);%一维矩阵转换二维矩阵 %figure; %imhist(c); d=zeros(n,n); %二维混沌矩阵调制 Fora1=1:n;

Fora2=1:n; Ifc(a1,a2)>=0.5; d(a1,a2)=1; elsed(a1,a2)=0; end; end;

end;

%sum(sum(d)) ichao_ans=d; figure;

imshow(ichao_ans);

本文来源:https://www.bwwdw.com/article/50l8.html

Top