3

3D マトリックスがある場合、Xそれは 4 x 10 x 50.

行列は、最初の次元の位置と速度、2 番目の次元のさまざまな粒子 (またはボートなど) のインデックス、最後に 3 番目の粒子の動きのさまざまな時間ステップで構成されます。それほど重要ではないかもしれませんが、私の問題を明確にするかもしれません。

X最初の 2 次元の特定のインデックスの値を 3 次元にわたってプロットしたいとします。

>> plot(X(1,1,:))
Error using plot
Data may not have more than 2 dimensions

提供された値は 1 次元ですが、次のように個別に指定されるため、ここではプロットを使用できません。

>> X(1,1,1:5)

ans(:,:,1) =
10

ans(:,:,2) =
11.4426

ans(:,:,3) =
12.5169

ans(:,:,4) =
13.7492

ans(:,:,5) =
14.9430

X( 1, 1, :)の結果をベクトルに変換するにはどうすればよいですか?

4

2 に答える 2

3

Xwith にインデックスを付けるとX( 1, 1, : )、3D マトリックスが返されます。ただし、plotその入力はベクトルまたは 2D 行列である必要があります。ベクトルに変換するX( 1, 1, : )には、シングルトンの次元を削除する必要があります。組み込み関数squeezeはこれを行います:

試す:

X2 = squeeze( X( 1, 1, : ) );
plot( X2 )
于 2013-01-17T17:18:18.157 に答える
1

インデックスを作成する方法では、実際には2次元ベクトルが生成されます。だからsize(A(:,:,1)実際には4x10

プロットするには、Matlabのスクイーズ演算子を使用します

plot(squeeze(X(:,:,1))
于 2013-01-17T17:21:22.833 に答える