[英]turing a 3d matrix so 3rd dimension becomes the 2nd dimension
我的问题源于串联。 我有一个3D矩阵,定义为Z(行)x X(列)xY。我可以将其转换为Z尺寸。 我可以将horzcat放到X维度上。 但不包括Y轴,因为horzcat仅添加到第二维上(根据帮助文件)。
需要强调的是,我并不是要扩展原始矩阵。
因此,我将零层添加到偏移尺寸上并进行连接。 它适用于行(Z)和列(X),但如何操作Z来保持水平并保持秩序?
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.
我想将评论更改为答案,因为我怀疑它会以这种方式工作:
vertcat
通过沿第1维(行)连接vertcat
工作。 horzcat
通过沿第二维(列)工作。 函数的更一般形式是cat(DIM,A,B)
,它沿着维度DIM
连接A
和B
因此,对于您的情况,请尝试:
Ycontacts = cat(3,Ycontact, zeros(nz,nx,1)) - cat(3,zeros(nz,nx,1), Ycontact);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.