我的问题源于连接。我有一个3D矩阵,定义为Z(行)x X(列)x Y.我可以精确地转移到Z维度上。我可以将horzcat放到X维度上。但不是Y轴,因为horzcat只会添加到第二维(根据帮助文件)。
要强调,我不是要扩展原始矩阵。
所以我在偏移维度上添加了一层零并连接。它的行(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.
答案 0 :(得分:2)
我想我会将我的评论改为答案,因为我怀疑它会以这种方式运作:
vertcat
通过连接第一维(行)来工作。 horzcat
通过第二维(列)工作。函数的更一般形式是cat(DIM,A,B)
,它沿着维度A
连接B
和DIM
。
因此,对于您的情况,请尝试:
Ycontacts = cat(3,Ycontact, zeros(nz,nx,1)) - cat(3,zeros(nz,nx,1), Ycontact);