📄 sa1.m
字号:
tic
I = imread('cameraman.jpg');
H=imrotate(I,3,'bilinear','crop');
H=rgb2gray(H);
I=rgb2gray(I);
I=double(I);
H=double(H);
fw=mean2(abs(H-I));
fb=0;
p=0.8;
t0=-(fw-fb)/log(p);
n=5;
nn=n*n;
nge=60;
ee=zeros(nn,1);
a=zeros(nn,1);
JIAO=zeros(nn,1);
JIAO(1:nn)=5*rand(nn,1);
JIAO((nn+1)/2)=5;
JIAO(1,1)=5*rand(1);
JIAOnew=zeros(nn,1);
E=zeros(nn,1);
Enew=zeros(nn,1);
T=zeros(nge,1);
T(1,1)=t0;
Th=H;
Ti=I;
for l=1:nn
[EEE,E(l,1)]=mubiao(Th,Ti,JIAO(l,1));
end
JIAOnew=JIAO;
Enew=E;
Thnew=H;
Tinew=I;
for k=1:nn-1
a(k,1)=newstate(JIAO(k,1),E(k,1)); %a为产生的新状态
[eee,ee(k,1)]=mubiao(Th,Ti,a(k,1)); %ee为产生的新状态的目标函数
chaEE(k,1)=ee(k,1)-E(k,1); %对JIAO,E进行平移移位
if chaEE(k,1)<=0|exp(-chaEE(k,1)/T(1,1))>=rand(1) %如条件满足对JIAO,E进行平移移位
JIAOnew(k+1,1)=a(k,1);Enew(k+1,1)=ee(k,1);
JIAO=JIAOnew;E=Enew;
elseif chaEE(k,1)>0
JIAOnew=JIAO;Enew=E;
end
end
[min,imin]=min(Enew(:));
[xpeak,ypeak]=ind2sub(size(Enew),imin(1));
E(1,1)=Enew(xpeak,ypeak);
JIAO(1,1)=JIAOnew(xpeak,ypeak);
M(1,1)=E(1,1);
N(1,1)=JIAO(1,1);
toc
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -