matlab 实现常用的混沌映射(Tent, Sine, Sinusoidal, Piecewise, Logistic, Cubic, Chebyshev)

大部分混沌映射的系数是有限制的, 针对每个模型最优的混沌系数是不一样的, 因此混沌系数要根据自己的模型来定. 下面的系数都是根据我自己的模型而设定的.

1 Tent 映射

公式:
在这里插入图片描述
实现:

N: 种群的个数; dim: 维度; tent: 混沌系数.

tent=2.5;
Tent=rand(N,dim);
for i=1:N
    for j=2:dim
        if Tent(i,j-1)<tent
            Tent(i,j)=Tent(i,j-1)/tent;
        elseif Tent(i,j-1)>=tent
            Tent(i,j)=(1-Tent(i,j-1))/(1-tent);
        end
    end
end

2 Sine 映射

公式:
在这里插入图片描述

实现:

N: 种群的个数; dim: 维度; sine: 混沌系数.

sine=2.5;
Sine=rand(N,dim);
for i=1:N
    for j=2:dim
        Sine(i,j)=(4/sine)*sin(pi*Sine(i,j-1));
    end
end

3 Sinusoidal 映射

公式:
在这里插入图片描述

实现:

N: 种群的个数; dim: 维度; sinusoidal: 混沌系数.

sinusoidal=2.5;
Sinusoidal=rand(N,dim);
for i=1:N
    for j=2:dim
        Sinusoidal(i,j)=sinusoidal*Sinusoidal(i,j-1).^2*(sin(pi*Sinusoidal(i,j-1)));
    end
end

4 Piecewise 映射

公式:
在这里插入图片描述

实现:

N: 种群的个数; dim: 维度; p: 混沌系数.

p=2.3;
Piecewise=rand(N,dim);
for i=1:N
    for j=2:dim
        if Piecewise(i,j-1)>0&&Piecewise(i,j-1)<p
            Piecewise(i,j)=Piecewise(i,j-1)/p;
        elseif Piecewise(i,j-1)>=p&&Piecewise(i,j-1)<0.5
            Piecewise(i,j)=(Piecewise(i,j-1)-p)/(0.5-p);
        elseif Piecewise(i,j-1)>=0.5&&Piecewise(i,j-1)<1-p
            Piecewise(i,j)=(1-p-Piecewise(i,j-1))/(0.5-p);
        elseif Piecewise(i,j-1)>=1-p&&Piecewise(i,j-1)<1
            Piecewise(i,j)=(1-Piecewise(i,j-1))/p;
        end
    end
end

5 Logistic 映射

公式:
在这里插入图片描述

实现:

N: 种群的个数; dim: 维度; logistic: 混沌系数.

logistic=2.3;
Logistic=rand(N,dim);
for i=1:N
    for j=2:dim
       Logistic(i,j)=logistic.* Logistic(i,j-1).*(1-Logistic(i,j-1));
    end
end

6 Cubic 映射

公式:
在这里插入图片描述

实现:

N: 种群的个数; dim: 维度; cubic: 混沌系数.

cubic=2.3;
Cubic=rand(N,dim);
for i=1:N
    for j=2:dim
       Cubic(i,j)=cubic.*Cubic(i,j-1).*(1-Cubic(i,j-1).^2);
    end
end

7 Chebyshev 映射

公式:
在这里插入图片描述
实现:

N: 种群的个数; dim: 维度; chebyshev: 混沌系数.

chebyshev=4;
Chebyshev=rand(N,dim);
for i=1:N
    for j=2:dim
       Chebyshev(i,j)=cos(chebyshev.*acos(Chebyshev(i,j-1)));
    end
end
### 回答1: 在使用MATLAB进行tent混沌映射加密图像的过程中,首先需要加载图像并将其转换为灰度图像。然后,我们需要选择适当的参数来定义tent混沌映射的迭代次数和混沌常数。接下来,我们可以通过编写MATLAB代码实现tent混沌映射的迭代计算。 在具体的迭代计算过程中,我们需要定义一个初始值,并使用tent混沌映射的公式进行迭代计算。在每次迭代中,我们可以将计算得到的值作为像素的位置坐标,并将原始图像的像素值写入到新的位置中。通过不断迭代计算并更新图像的像素值,我们可以实现对图像的加密操作。 在加密过程中,我们可以增加一些操作来进一步增强加密算法的安全性。例如,可以将迭代次数和混沌常数设置为密钥,并在加密和解密过程中必须使用相同的密钥才能正确地恢复原始图像。 最后,在加密完成后,我们可以将加密后的图像保存到文件或显示出来。当我们需要解密图像时,只需再次进行相同的迭代计算过程,使用正确的密钥并将像素值写入适当的位置。这样就可以恢复出原始图像,并且解密后的图像与原始图像完全一致。 总之,使用MATLAB进行tent混沌映射加密图像可以通过迭代计算和像素位置的变换来实现。这种加密算法可以提供一定的安全性,并且在加密和解密过程中需要使用相同的密钥。 ### 回答2: 使用MATLAB进行图像加密时,可以选择采用混沌映射算法对图像进行加密。其中,Tent混沌映射是一种常用混沌映射算法之一。下面简要介绍使用MATLAB实现Tent混沌映射对图像进行加密的步骤。 首先,需要加载要加密的图像,并将其转换为灰度图像,使得图像的每个像素值在0到255之间。 接下来,选择适当的参数进行Tent混沌映射的初始化,例如设置初始X值、混沌映射参数以及迭代次数。同时,初始化一个与图像尺寸相同的矩阵来保存生成的混沌序列。 然后,通过迭代计算Tent混沌映射的下一个值,并将其保存到混沌序列矩阵中,直到完成所有迭代次数。 在得到混沌序列后,将其进行归一化处理,使其值在0到1之间。 接下来,将混沌序列与图像进行异或运算,以实现图像加密。具体操作是将混沌序列矩阵与图像矩阵的每个像素值进行异或运算,并将运算结果保存到新的图像矩阵中。 最后,将加密后的图像保存到本地文件中,以便于后续的解密操作。 需要注意的是,为了恢复原始图像,解密操作需要使用相同的初始参数和迭代次数对加密后的图像进行相同的过程,将加密后的图像与混沌序列进行异或运算,即可得到原始图像。 通过以上步骤,就可以实现使用MATLAB对图像进行Tent混沌映射加密的过程。当然,混沌加密算法需要选择合适的参数和迭代次数,以保证图像的加密效果和安全性。 ### 回答3: Tent混沌映射是一种常用于数据加密的非线性混沌映射算法,可以通过生成一个具有随机性质的序列来实现图像的加密。下面将介绍如何使用MATLAB实现tent混沌映射加密图像。 首先,我们需要导入图像并将其转换为灰度图像。可以使用MATLAB自带的imread函数来读取图像,并使用rgb2gray函数将彩色图像转换为灰度图像。得到的灰度图像将作为我们加密的对象。 接下来,我们需要实现tent混沌映射算法。可以使用MATLAB编写一个函数,接受输入参数和初始条件,并生成一个具有随机性质的序列。具体的算法实现可以参考tent混沌映射算法的定义。 生成的混沌序列可以被视为一个密钥,在加密过程中使用。每个像素点的灰度值将与对应位置的混沌序列进行异或运算,从而实现图像的加密。可以使用bitxor函数来实现异或运算。 最后,将加密后的图像保存到磁盘上。可以使用imwrite函数将加密后的图像写入到指定的文件中。 总结起来,使用MATLAB实现tent混沌映射加密图像的步骤如下: 1. 导入图像并将其转换为灰度图像; 2. 实现tent混沌映射算法生成混沌序列; 3. 将混沌序列与图像进行异或运算,实现图像加密; 4. 将加密后的图像保存到磁盘上。 需要注意的是,加密后的图像只能通过使用相同的密钥进行解密才能恢复原始图像。所以,在进行图像加密时,应妥善保存生成的混沌序列作为密钥,以便后续的解密操作。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值