单独的3D矩阵像numpy

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单独的3D矩阵像numpy相关的知识,希望对你有一定的参考价值。

我正在将numpy代码转换为matlab。张量是张量分量的6×2D矩阵的3D矩阵。该代码似乎然后将它们分成6个单独的2D矩阵。

gxx, gxy, gxz, gyy, gyz, gzz = tensor

我可以在matlab中雄辩地做到这一点吗?

re OmG:gxx等是重力网格的六个张量分量。对于x方向x的二阶导数xx,xy是y方向x的二阶导数,等等。这些分量将通过一个简单的方程来计算不变量,然后计算重力异常的深度。

答案

正如@ Div-iL所说,您可以简单地将每个变量分配给3D数组的切片:

tensor = rand(5,3,6); % Random data to play with

gxx = tensor(:,:,1);
gxy = tensor(:,:,2);
% etc

但是,如果您真的想自动执行此操作,则可以生成2D数组的单元格数组(使用mat2cell),然后使用comma-separated list赋值将它们分配给变量:

[nx,ny,nz] = size(tensor);
ca = mat2cell(tensor, nx, ny, ones(1,nz));
[gxx, gxy, gxz, gyy, gyz, gzz] = ca{:};

然而,这对我来说都有点毛茸茸。如果你正在寻找一个原生支持的单行(如你的例子)那么我认为你运气不好。

以上是关于单独的3D矩阵像numpy的主要内容,如果未能解决你的问题,请参考以下文章

3d Numpy 数组到 2d

3d Numpy 数组到 2d

Numpy 3d矩阵到2d矩阵

Numpy:将矩阵与 3d 张量相乘——建议

将 2d 矩阵转换为 3d 单热矩阵 numpy

在 numpy 中从具有索引的 2D 矩阵构建 3D 布尔矩阵