www.pudn.com > Arnold000.rar > Arnold000.m


function Arnold(Image) 
%Image:待加密图像文件名(注意写格式后缀),只为二维 
%Frequency:图像需要变换的次数 
 
if nargin<1 
    disp('请按照程序的输入参数格式输入参数!!!'); 
    return; 
end 
 
%将Q赋值给M,计算Q的大小 
Q=imread('D:\MATLAB71\work\lena.bmp'); 
M=Q; 
Size_Q=size(Q); 
 
%如果不是二维数组,则不处理,返回 
if(length(Size_Q)==2) 
    if Size_Q(1)~=Size_Q(2) 
        disp('不是方阵,不能进行Arnold变换'); 
        return 
    end 
else 
    disp('不是二维数组,不进行Arnold变换'); 
    return 
end 
 
%-------------------------------------------------------------------------- 
%Arnold变换加密 
K=Size_Q(1); 
M1=Q; 
 
for i=1:K 
    for j=1:K 
        c=M1(i,j); 
        M2(mod(i+j-2,K)+1,mod(i+2*j-3,K)+1)=c; 
    end 
end 
 
imshow(M2);