繁体   English   中英

在Matlab中从3个3D数组创建3D向量数组

[英]Creating an array of 3D vectors from 3 3D arrays in matlab

假设我有3个大小为2x2x2的3D阵列

u = [[3 4] [9 8]; [1 2] [3 4]]

v = [[5 4] [8 5]; [3 2] [-1 4]]

w = [[1 4] [9 0]; [4 5] [3 1]]

我想创建一个大小为2x2x2的3d数组,将其存储为3D向量,其中元素从数组u,v,w派生

V = [[(3,5,1)(4,4,4)] [(9,8,9)(8,5,0)]; [[1,3,4)(2,2,5 )] [(3,-1,3)(4,4,1)]]

有没有一种方法可以在matlab中指定并执行此操作?

编辑:我更改了表示形式,以避免有关单元格数组的任何混淆。 它们都是数字数组。

PS:我也希望这种表示形式具有像渐变这样的计算能力? 那可能吗 ?

你是说像这样的细胞阵列吗?

u ={[3 4],[9 8];[1 2],[3 4]}
v ={[5 4],[8 5];[3 2],[-1 4]}
w ={[1 4],[9 0];[4 5],[3 1]} % (note the commas)

这样做会很麻烦,而使用普通的matlab 3D矩阵则更直接:

u = cat(3,[3 4; 9 8],[1 2; 3 4])
v = cat(3,[5 4; 8 5],[3 2; -1 4])
w = cat(3,[1 4; 9 0],[4 5; 3 1])

您可以使用cat命令将第四个维度上的内容简单地连接起来,如下所示:

V = cat(4, u, v, w)

然后,您感兴趣的3D向量位于V的最后维度,例如,您可以通过(1,2,1)获得向量

V(1,2,1,:)

要么

>> squeeze(V(1,2,1,:))

ans =

    4
    4
    4

如果您想获得3x1向量。

如果必须的话,您可以使用cell2mat从单元阵列中获取矩阵,并使用整形以正确的尺寸获取它们。 有关以下内容,请查阅matlab文档:

doc cell2mat
doc reshape

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM