使用 meshgrid
使用 meshgrid 避免二重循环。
patchSize = 17;
pixel_weights = zeros(patchSize);
mid = ceil(patchSize/2);
weightsSig = 2;
sig = floor(patchSize/2)/weightsSig;
for i = 1:patchSize,
for j = 1:patchSize,
d = (i-mid)^2 + (j-mid)^2;
pixel_weights(i, j) = exp(-d/2/sig^2)/sig/(sqrt(2*pi));
end
end
[X, Y] = meshgrid(1:patchSize);
D = (X-mid).^2 + (Y-mid).^2;
pixel_weights2 = exp(-D/2/sig^2)/sig/(sqrt(2*pi));
pixel_weights = pixel_weights2/max(pixel_weights2(:));