matlab三维数组如何转成二维数组?

比如说我创立了一个81*81*81的三维数组A,如果我想取A(:,:,n)或A(:,n,:)或A(n,:,:)(n为小于81的正整数)的某一维度的数组矩阵,请问我这时应如何操作呢?

data=[A(:,:,1) A(:,:,2) A(:,:,3)...A(:,:,81) ];

在定义的时候,抽取元素形式为A=B(:,:,i)。matlab中三维数组顺序是:行、列、页。二维数组只有行、列。如果两只之间赋值,有一个维数缩减问题需要注意。

前者可以缩减为二维,而后者不能缩减为二维的主要原因就在于,三维矩阵中,第一维度代表行,第二维度代表列,第三维度代表页,当第三维度为1时,代表只有1页,自然缩减为二维。当第一维度为1时,代表只有一行,但是每页都有。

扩展资料:

二维数组A[m][n],这是一个m行,n列的二维数组。设a[p][q]为A的第一个元素,即二维数组的行下标从p到m+p,列下标从q到n+q,按“行优先顺序”存储时则元素a[i][j]的地址计算为:

LOC(a[i][j]) = LOC(a[p][q]) + ((i − p) * n + (j − q)) * t

按“列优先顺序”存储时,地址计算为:

LOC(a[i][j]) = LOC(a[p][q]) + ((j − q) * m + (i − p)) * t

存放该数组至少需要的单元数为(m-p+1) * (n-q+1) * t 个字节 

参考资料来源:百度百科-二维数组

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-10-21
A = rand(81,81,81);
n = 20;
A1 = A(:,:,n); % 81*81 二维
A2 = A(:,n,:); % 81*1*81 三维
A3 = A(n,:,:); % 1*81*81 三维

% 将三维转为 81*81 二维
A22 = reshape(A2,81,81);
A32 = reshape(A3,81,81);本回答被提问者和网友采纳
第2个回答  2015-08-01
举个例子,你看看就明白了
A = rand(81,81,81);
n = 20;
A1 = A(:,:,n); % 81*81 二维
A2 = A(:,n,:); % 81*1*81 三维
A3 = A(n,:,:); % 1*81*81 三维

% 将三维转为 81*81 二维
A22 = reshape(A2,81,81);
A32 = reshape(A3,81,81);
第3个回答  2015-08-16
三维是空间,二维是平面,转换过来要舍去一个轴向的数据,如三维:n{x,y,z}转二维那只有n
{x,y}或,n{x,z}或n{y,z}这要看你取哪个面了
第4个回答  2019-04-16
data=[A(:,:,1) A(:,:,2) A(:,:,3)...A(:,:,81) ];