混沌映射(序列)matlab 算法“小全”:Logistic 、Henon 、帐篷、kent (含混沌二值图像生成函数)1.Logistic (罗切斯特)映射变换核:)1(1n n n x ax x −=+绘图程序:n=64;key=0.512;an=linspace(3.1,3.99,400);hold on;box on;axis([min(an),max(an),-1,2]);N=n^2;xn=zeros(1,N);for a=an;x=key;for k=1:20;x=a*x*(1-x);%产生公式end;for k=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)实用混沌加密函数:function ichao_ans=ichaos_logistic(varargin)%logistic 序列生成算法%函数名:%logistic 混沌序列生成函数%参数:%(n ,key ),n 为矩阵阶数,key 为迭代初始值。
%(n ),n 为矩阵阶数,key=0.600。
%()或(n ,key ,...),n=64,key=0.600。
switch nargin;case 1;n=varargin{1};key=0.600;case 2;n=varargin{1};key=varargin{2};otherwisekey=0.600;n=64;endN=n^2;xn=zeros(1,N);a=4;x=key;for k=1:20;x=a*x*(1-x);%产生公式end;for k=1:N;x=a*x*(1-x);xn(k)=x;%一维矩阵记录迭代结果end;c=reshape(xn,n,n);%一维矩阵转换二维矩阵d=zeros(n,n);%二维混沌矩阵调制for a1=1:n;for a2=1:n;if c(a1,a2)>=0.5;d(a1,a2)=1;else d(a1,a2)=0;end;end;end;%figure;title('logistic 映射');%imshow(d);ichao_ans=d;2.Henon (埃农)映射变换核:21n 11x {n n nn ax y bx y −+==++绘图程序:b=0.3;N=400;an=ones(1,N);xn=zeros(1,N);hold on;box on;x=0;y=0;for a=0:0.001:1.4for k=1:N;xm=x;ym=y;x=ym+1-a*xm.*xm;y=b*xm;endxn(1)=x;for n=2:N;xm=x;ym=y;x=ym+1-a*xm.*xm;y=b*xm;xn(n)=x;endplot(an*a,xn,'k.','markersize',1);endxlim([0,a]);实用混沌加密函数:function ichao_ans=ichaos_henon(varargin)%埃农(Henon )映射%0.2<key<0.314;理想范围(0.25—0.314)。
重量较大。
%参数:%(n ,key ),n 为矩阵阶数,key 为迭代初始值。
%(n ),n 为矩阵阶数,key=0.314。
%()或(n ,key ,...),n=64,key=0.314。
switch nargin;case 1;n=varargin{1};key=0.314;case 2;n=varargin{1};key=varargin{2};otherwisekey=0.314;n=64;endn=64;N=n^2;an=ones(1,N);xn=zeros(1,N);x=0;y=0;a=1.4;for cir1=1:N;xm=x;ym=y;x=ym+1-a*xm.*xm;y=key*xm;endxn(1)=x;for cir2=2:N;xm=x;ym=y;x=ym+1-a*xm.*xm;y=key*xm;xn(cir2)=x;endc=reshape(xn,n,n);%一维矩阵转换二维矩阵d=zeros(n,n);%二维混沌矩阵调制for a1=1:n;for a2=1:n;if c(a1,a2)>=0;d(a1,a2)=1;else d(a1,a2)=0;end;end;end;ichao_ans=d;314.02.0)4.1,0(a ≤<∈b3.帐篷映射变换核:||)1(1n n x a a x +−=+绘图程序:%帐篷映射%0<a<1%a 理想值0.99—1%0<x<1n=20;N=n^2;xp=zeros(1,N);Aa=ones(1,N);hold on;box on;x=0.01;%初值for a=0:0.001:1;for n=1:N;x=a-(1+a)*abs(x);endfor k=1:N;x=a-(1+a)*abs(x);xp(k)=x;endplot(Aa*a,xp,'k.','markersize',1);endxlim([0,a]);实用混沌加密函数:function ichao_ans=ichaos_tent(varargin)%帐篷映射%0<a<1%a 理想值0.99—1%x 初值作为密钥%0<x<1%参数:%(n ,key ),n 为矩阵阶数,key 为迭代初始值。
%(n ),n 为矩阵阶数,key=0.99。
%()或(n ,key ,...),n=64,key=0.99。
switch nargin;case 1;n=varargin{1};key=0.99;case 2;n=varargin{1};key=varargin{2};otherwisekey=0.99;n=64;endN=n^2;xp=zeros(1,N);x=key;a=0.998;for cir1=1:N;x=a-(1+a)*abs(x);endfor cir2=1:N;x=a-(1+a)*abs(x);xp(cir2)=x;endc=reshape(xp,n,n);%一维矩阵转换二维矩阵d=zeros(n,n);%二维混沌矩阵调制for a1=1:n;for a2=1:n;if c(a1,a2)>=0;d(a1,a2)=1;else d(a1,a2)=0;end;end;end;%sum(sum(d))ichao_ans=d;%imshow(ichao_ans);)1,0(∈a4.kent (肯特)映射a x a x x a ax n nx ≤<≤<−−=0,1,11{绘图程序:%肯特映射n=20;N=n^2;xp=zeros(1,N);Aa=ones(1,N);x=0.36;hold on;box on;for a=0.01:0.001:0.5;for cir1=1:N;if x<=a;x=x/a;elsex=(1-x)/(1-a);end endfor cir3=1:N;if x<=a;x=x/a;elsex=(1-x)/(1-a);endxp(cir3)=x;endplot(Aa*a,xp,'k.','markersize',1);endxlim([0,a]);实用混沌加密函数:function ichao_ans=ichaos_kent(varargin)%0.1<x<1,将初值作为密钥key %a<0.5,当大于0.4时比较理想%参数:%(n ,key ),n 为矩阵阶数,key 为迭代初始值。
%(n ),n 为矩阵阶数,key=0.8。
%()或(n ,key ,...),n=64,key=0.8。
switch nargin;case 1;n=varargin{1};key=0.8;case 2;n=varargin{1};key=varargin{2};otherwisekey=0.8;n=64;endN=n^2;xp=zeros(1,N);x=key;a=0.4;for cir1=1:N;if x<=a;x=x/a;elsex=(1-x)/(1-a);end endfor cir3=1:N;if x<=a;x=x/a;elsex=(1-x)/(1-a);endxp(cir3)=x;endc=reshape(xp,n,n);%一维矩阵转换二维矩阵%figure;%imhist(c);d=zeros(n,n);%二维混沌矩阵调制for a1=1:n;for a2=1:n;if c(a1,a2)>=0.5;d(a1,a2)=1;else d(a1,a2)=0;end;end;end;%sum(sum(d))ichao_ans=d;figure;imshow(ichao_ans);。