0

私がする必要があるのは、一次元配列を取ることです。

[1, 1, 2, 2, 3, 3]

そしてそれを点の配列に変えます:

[[1, 1], [2, 2], [3, 3]]

関数ではなく、単純なネイティブのMATLABの方法を望んでいます。これは、ポイントのセットに入ります。

[ [[1, 1], [2, 2], [3, 3]],
  [[4, 4], [5, 5], [6, 6]],
  [[7, 7], [7, 7], [8, 8]] ]

これが発生する理由は、ポイントが単一のストリームとしてテキストファイルに保存され、意味のあるものに変換する必要があるためです。

4

2 に答える 2

3

最初に、行ベクトルを水平方向に連結すると、ペアの行ではなく、1つの大きな行ベクトルが生成されることに注意してください。これは。[[1, 1], [2, 2], [3, 3]]と同じ[1 1 2 2 3 3]です。したがって、それらを垂直に連結する必要があります。

あなたが試すことができます

a = [1, 1, 2, 2, 3, 3];

b = reshape(a, 2, floor(length(a)/2))';

これにより、各行が1点の座標を表す行列が作成されます。

b =

     1     1
     2     2
     3     3
于 2012-06-27T06:29:32.403 に答える
2

多様性のために、この回答を追加しています。

H.Muster が言ったように、ベクトルを連結すると、より大きなベクトルまたは行列が生成されます (操作によって異なります)。あなたはそれで行くことができます。

ただし、「セル」と呼ばれるデータ コンテナーのセットであるセル配列を使用することもできます。セルには、同じセル配列に含まれる他のセルに関係なく、任意の型のデータを含めることができます。

あなたの場合、セル配列の作成は、(H.Muster の回答とは) わずかに異なる構文を使用して行うことができます。

a = [1, 1, 2, 2, 3, 3];
p = mat2cell(a, 1, 2 * ones(1, numel(a) / 2))

pは cell 配列で、各セルには 1 行 2 列の点ベクトルが含まれます。セル配列の要素にアクセスするには、中かっこを使用する必要があります。たとえば、2 番目のポイントは になりますp{2} = [2, 2]

于 2012-06-27T07:05:23.393 に答える