我有以下部分:
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);
奇怪的是,程序不会给我正在应用它的大多数图像上的错误。
你知道为什么我会收到这样的错误吗?
感谢。
答案 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