我正在将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{:};
然而,这对我来说都有点毛茸茸。如果你正在寻找一个原生支持的单行(如你的例子)那么我认为你运气不好。