📄 accuracy_diffusion.m
字号:
% testing accuracy of numerical solution of diffusion equation
smoothkernel = inline('[ 0 dt 0; dt (1-4*dt) dt; 0 dt 0 ]','dt');
stepsizes = [0.05 0.1 0.15 0.2 0.22 0.24 0.25 0.26 ];
mse = [];
endscale = 2;
a = imread('cameraman.tif');
a = im2double( a );
for dt = stepsizes
niter = ceil(endscale^2 / (2 * dt));
b = a;
for i=1:niter
b = conv2br( b, smoothkernel(dt) );
end
g = gD(a, sqrt(2*niter*dt),0,0);
d = (g-b).^2;
d = d(10:(end-10),10:(end-10)); % forget border problems
mse = [mse, mean(d(:))];
subplot(1,3,1); imshow(g);
subplot(1,3,2); imshow(b);
subplot(1,3,3); plot(stepsizes(1:length(mse)), log(mse) );
drawnow;
end
figure;
plot(stepsizes,log(mse),'-o')
title('Mean square error as function of stepsize');
xlabel('stepsize');
ylabel('log(mse)');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -