0

我有几个数组:

x = [0:pi/16:2*pi] 
y = [0:pi/16:2*pi]

我想用这种方式制作一个矩阵 xy:

xY = [(0,0)      (0,pi/16)      ...     (0,2pi);
      (pi/16,0)  (pi/16,pi/16)  ...     (pi/16,2pi);
          :            :                     :
      (2pi,0)    (2pi,pi/16)    ...     (2pi,2pi)]

我已经尝试过很多这样的事情:

for i=1:length(x)
    for j=1:length(y)
        xy{i,j} = [{x(i),y(j)}];
    end
end

,但是我遇到了很多错误。

我知道这应该很容易,最大的问题是我的帖子标题(因此,我寻求帮助的方式)是错误的,所以我为此道歉。

我想我应该提到我正在尝试创建一个多层感知器,它将使用该矩阵和这个公式进行训练:

fxy = cos(x)-3*sin(y);

提前致谢!

4

2 回答 2

1

最简单的方法是创建大小矩阵length(x)-by- length(y)-by- 2

 A = zeros(length(x), length(y), 2);
 for i = 1 : length(x); for j = 1 : length(y); A(i, j, :) = [x(i), y(j)]; end; end;

在您的情况下,矩阵A将具有 size 33x33x2。要使用索引获取对,请使用i, j以下代码:

 squeeze(A(i, j, :))

或者您可以调整代码以使用此类 3 维矩阵。

于 2012-05-07T22:54:20.380 回答
1

这正是meshgrid设计的目的。

于 2012-05-07T22:59:34.310 回答