1

私の問題は連結に起因します。Z (行) x X (列) x Y として定義された 3D マトリックスがあります。Z 次元にうまく変換できます。horzcat は X 次元にうまく移動できます。ただし、horzcat は 2 番目の次元にのみ追加するため (ヘルプ ファイルによると)、Y 軸ではありません。

強調するために、元のマトリックスを拡張しようとしているわけではありません。

  • 元の 3D マトリックス (MGeol) には、セルが存在する地質領域の値があります。
  • Z、X、Y 方向に 1 だけオフセットされた MGeol マトリックスのわずかに小さいバージョンを差し引くことで、領域が変化する場所を特定します。その結果、リージョン間の接触にゼロ以外の値が存在します。
  • これらすべての結果を元の行列と同じサイズの行列に戻すため、それらを座標ベクトルに並べることができます。

そこで、オフセット次元にゼロのレイヤーを追加して連結します。行 (Z) と列 (X) で機能しますが、Z を horzcat に操作して順序を維持するにはどうすればよいですか?

Zcontact = MGeol(1:nz-1,:,:) - MGeol(2:nz,:,:);

Zcontacts = vertcat(Zcontact, zeros(1,nx,ny)) - vertcat(zeros(1,nx,ny), Zcontact);

Xcontact = MGeol(:,1:nx-1,:) - MGeol(:,2:nx,:);

Xcontacts = horzcat(Xcontact, zeros(nz,1,ny)) - horzcat(zeros(nz,1,ny), Xcontact);

Ycontact = MGeol(:,:,1:ny-1) - MGeol(:,:,2:ny);

Ycontacts = horzcat(Ycontact, zeros(nz,nx,1)) - horzcat(zeros(nz,nx,1), Ycontact); %<- causes the error

Error using horzcat
CAT arguments dimensions are not consistent.
4

1 に答える 1