我试图用这个双循环来计算坐标,所以我已经
了A = zeros(100,100);
for x = 1:100
for y = 1:100
A(x,y) = x^2 + y %or other functions with x and y
end
end
虽然试图通过使用类似网格网格之类的东西来对其进行矢量化,但我已经看到过一些错误,例如"连接的矩阵的维数不一致。"
有没有办法对此进行矢量化?非常感谢你的帮助。
我实际上正在使用
A = zeros(31,31);
for x = 1:31
for y = 1:31
A(y,x) = f(1.5, (x-16)/10 + i*((y-16)/10), 1000);
end
end
其中f(1.5,...)是我用来计算A的点的其他函数,它只能输出一个数字。
尝试类似
的内容A = zeros(31,31);
[X,Y] = ndgrid(1:31,1:31);
A(Y,X) = f(1.5, (X-16)/10 + i*((Y-16)/10), 1000);
给我:
使用horzcat时出错 连接的矩阵的尺寸不一致。
f
中的错误第3行出错: A(Y,X)= f(1.5,(X-16)/ 10 + i *((Y-16)/ 10),1000);
答案 0 :(得分:3)
让N = 100
成为数据大小。你可以在这里玩很少的方法。
方法#1:bsxfun
内置@plus
A = bsxfun(@plus,[1:N]'.^2,1:N)
方法#2:bsxfun
与anonymous function
-
func = @(x,y) x.^2 + y
A = bsxfun(func,[1:N]',1:N)
对于x
和y
的常规功能,您可以使用ndgrid
或meshgrid
,如下所述。
方法#3:使用ndgrid
-
[X,Y] = ndgrid(1:N,1:N);
A = X.^2 + Y
方法#4:使用meshgrid
-
[Y,X] = meshgrid(1:N,1:N);
A = X.^2 + Y