错误 - 索引超出矩阵维度

时间:2014-11-12 08:23:57

标签: matlab runtime-error

我有以下部分:

N = size(p,1);
x = 1:N; y = x;
[X,Y] = meshgrid(x,y);
R = sqrt((2.*X-N-1).^2+(2.*Y-N-1).^2)/N;
Theta = atan2((N-1-2.*Y+2),(2.*X-N+1-2));
R = (R<=1).*R;
Rad = radialpoly(R,n,m);    

Product = p(x,y).*Rad.*exp(-1i*m*Theta);

我在以下行中收到错误:

Product = p(x,y).*Rad.*exp(-1i*m*Theta);

我得到的错误是:

Index exceeds matrix dimensions.

我试图“调试”程序,发现尺寸问题可能是由于以下几行:

[X,Y] = meshgrid(x,y);

奇怪的是,程序不会给我正在应用它的大多数图像上的错误。

你知道为什么我会收到这样的错误吗?

感谢。

1 个答案:

答案 0 :(得分:0)

首先,很高兴看到您如何分配p变量。

确保您size(y)==size(p)尝试

assert(size(p,1) == size(p,2) )

assert(N == size(p,2) )

如果它返回错误,那么您的p不是正方形。


如果您事先知道您有一个矩形(非方形)数组,请相应地指定y

x = 1:size(p, 1)
y = 1:size(p, 2)
...
%// and maybe dependent on what you do:
N = min(size(p))

这样可确保在沿第二维索引时将其大小不超过p