1

次の 2 つの行列から順序付けられたペアのセル配列を作成したい...

すなわち

[X,Y] = meshgrid(1:10,1:10)

X =

 1     2     3     4     5     6     7     8     9    10
 1     2     3     4     5     6     7     8     9    10
 1     2     3     4     5     6     7     8     9    10
 1     2     3     4     5     6     7     8     9    10
 1     2     3     4     5     6     7     8     9    10
 1     2     3     4     5     6     7     8     9    10
 1     2     3     4     5     6     7     8     9    10
 1     2     3     4     5     6     7     8     9    10
 1     2     3     4     5     6     7     8     9    10
 1     2     3     4     5     6     7     8     9    10

Y =

 1     1     1     1     1     1     1     1     1     1
 2     2     2     2     2     2     2     2     2     2
 3     3     3     3     3     3     3     3     3     3
 4     4     4     4     4     4     4     4     4     4
 5     5     5     5     5     5     5     5     5     5
 6     6     6     6     6     6     6     6     6     6
 7     7     7     7     7     7     7     7     7     7
 8     8     8     8     8     8     8     8     8     8
 9     9     9     9     9     9     9     9     9     9
10    10    10    10    10    10    10    10    10    10

...ここで、セル配列 Z はセル配列であり、X と Y のすべてのエントリは x 座標と y 座標であり、座標の個々のペアは Z の要素です。

Z = { (1,1)  (2,1)  (3,1)  ... (10,1);
  (1,2)  (2,2)  (3,2)  ... (10,2);
  ...     ...    ...   ...  ...;
  (1,10) (2,10) (3,10) ... (10,10) }

どうすればこれを行うことができますか?

4

3 に答える 3

1

何が悪いんだろう

Z = cat(3, X,Y)

となることによって

>> Z(1, 2, :)
ans(:,:,1) =
     2
ans(:,:,2) =
     1

1 x 1 x 2 形式が気に入らない場合は、これを行うことができます

Z = cellfun(@squeeze, num2cell(cat(3,X,Y),3), 'UniformOutput', false)

またはこれ

Z = reshape(num2cell([X(:) Y(:)], 2), size(X))
于 2013-07-10T16:44:41.010 に答える
0

私がおそらく自分で使用するのは、次のような別のものです。

[X(:) Y(:)]

ただし、探している出力を最も簡単な方法で提供する私の試みは次のとおりです。

Z=num2cell(cat(3,X,Y),3)
于 2013-07-11T13:14:43.437 に答える