【问题标题】:separate 3D matrix like numpy单独的 3D 矩阵,如 numpy
【发布时间】:2017-12-19 11:18:45
【问题描述】:

我正在将 numpy 代码转换为 matlab。张量是张量分量的 6 x 2D 矩阵的 3D 矩阵。此代码似乎随后将它们拆分回这 6 个单独的 2D 矩阵。

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

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

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

【问题讨论】:

  • gxx, gyy, ... 到底是什么?请详细说明它们。'
  • gxx 等是重力网格的六个张量分量。 xx 表示 x 在 x 方向上的二阶导数,xy 是 x 在 y 方向上的二阶导数,等等。这些组件将通过一个简单的方程来计算不变量,然后计算重力异常的深度。
  • 看起来你只需要gxx = tensor(:,:,1); gxy = tensor(:,:,2); ...

标签: matlab numpy matrix 3d 2d


【解决方案1】:

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

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

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

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

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

然而,这一切让我觉得有点毛骨悚然。如果您正在寻找本机支持的单线(例如您的示例),那么我认为您不走运。

【讨论】:

    猜你喜欢
    • 2016-08-25
    • 1970-01-01
    • 1970-01-01
    • 2016-05-11
    • 1970-01-01
    • 2021-05-02
    • 2021-04-11
    • 1970-01-01
    • 2017-02-10
    相关资源
    最近更新 更多