Files
2026-07-13 13:30:25 +08:00

31 lines
691 B
Matlab
Executable File

function mu = isingMeanField(J, h, epoch)
% Mean field for 2d Ising model
% Input:
% J: scalar edge potential
% h: M X N image size node potential
% edgePot: k x k x m edge potential
% Output:
% mu: M x N image size expectation
% Written by Mo Chen (sth4nth@gmail.com)
tol = 0;
if nargin < 3
epoch = 50;
tol = 1e-8;
end
[M,N] = size(h);
mu = tanh(h);
stride = [-1,1,-M,M];
for t = 1:epoch
mu0 = mu;
for j = 1:N
for i = 1:M
pos = i + M*(j-1);
ne = pos + stride;
ne([i,i,j,j] == [1,M,1,N]) = [];
mu(i,j) = tanh(J*sum(mu(ne)) + h(i,j));
end
end
if max(abs(mu(:)-mu0(:))) < tol; break; end
end