0

我对如何在 MATLAB 中对无限量的矩阵求和感到非常困惑。可以说我有这个功能(高斯):

%Set up grid/coordinate system

Ngrid=400;
w=Ngrid;
h=Ngrid;

%Create Gaussian Distribution

G = zeros ([w, h]);
Sig = 7.3; %I want the end/resultant G to be a summation of Sign from 7.3 to 10 with dx 

for x = 1 : w
    for y = 1 : h
        G (x, y) = exp (-((Sig^-2)*((x-w/2+1)^2 + (y-h/2+1)^2)) / (2));
    end
end

我本质上希望最终/结果函数 G 是从 7.3 到 10 的 Sign 的总和,其中 dx (非常小)很小,即积分。我该怎么做呢?我很困惑。甚至可以做到吗?

4

1 回答 1

1

您似乎实际上并没有对G一系列Sig值进行求和。你永远不会改变Sig. 无论如何,假设它dx不是太小并且你有内存,这可以在没有任何循环的情况下完成,更不用说两个了。

Ngrid = 400;
w = Ngrid;
h = Ngrid;

% Create range for Sig
dx = 0.1;
Sig = 7.3:dx:10;

% Build mesh of x and y points
x = 1:w;
y = 1:h;
[X,Y] = meshgrid(x,y);

% Evaluate columnized mesh points at each value of Sig, sum up, reshape to matrix
G = reshape(sum(exp(bsxfun(@rdivide,-((X(:)-w/2+1).^2+(Y(:)-h/2+1).^2),2*Sig.^2)),2),[h w]);

figure
imagesc(G)
axis equal

这导致了这样的数字 在此处输入图像描述

上面那条长而复杂的线可以用这个代替(使用更少的内存,但可能会更慢):

G = exp(-((X-w/2+1).^2+(Y-h/2+1).^2)/(2*Sig(1)^2));
for i = 2:length(Sig)
    G = G+exp(-((X-w/2+1).^2+(Y-h/2+1).^2)/(2*Sig(i)^2));
end
于 2013-08-03T21:58:41.940 回答