如何在MATLAB中集成矩阵(矩阵之和与dx间距)?

时间:2013-08-03 20:05:45

标签: matlab statistics integration gaussian integral

我对如何在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的符号的总和,其中dx(无穷小)是小的,即积分。我该怎么做呢?我很困惑。它甚至可以完成吗?

1 个答案:

答案 0 :(得分: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

这导致像这样的数字 enter image description here

上面那么长的复杂行可以用这个替换(使用更少的内存,但可能更慢):

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