【发布时间】:2013-05-30 00:49:08
【问题描述】:
我的问题源于串联。我有一个定义为 Z(行)x X(列)x Y 的 3D 矩阵。我可以很好地垂直到 Z 维度。我可以 horzcat 可以很好地进入 X 维度。但不是 Y 轴,因为 horzcat 只添加到第二维(根据帮助文件)。
强调一下,我并不是要扩展原始矩阵。
- 原始 3D 矩阵 (MGeol) 包含一个地质区域单元格所在的值。
- 我通过在 Z、X 和 Y 方向上减去稍微较小版本的 MGeol 矩阵(偏移 1)来计算区域变化的位置。结果是区域之间的接触处出现非零值。
- 要将所有这些结果恢复到与原始矩阵相同大小的矩阵中,以便将它们与坐标向量对齐。
所以我在偏移维度上添加零层并连接。它适用于行(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.
【问题讨论】:
-
你试过
cat,而不是horzcat?它是更通用的函数,形式为cat(DIM,A,B)。那么,试试cat(3,Ycontact,zeros(nz,nx,1),)?请参阅我更彻底的答案。 -
你可以看看函数
permute(和ipermute)和shiftdim。