fastjacksonmin
2011-05-21, 12:13
大家好!最近碰到了两个高维度矩阵的处理的问题。
第一个:
以一个三维的矩阵为例。三维的矩阵可以看成是一个描述三维空间中的标量场的表达。而我们还有另一个二维的矩阵,描述了同一个三维空间中的一个曲面。现在我想问的是,如何不使用for循环的情况下,从以上的两个矩阵得到一个描述曲面上的标量场的二维矩阵?
我想过使用类似于A(index)的表达,其中A是3维的矩阵,而index是二维的一个矩阵。这样的返回结果是一个二维的矩阵。看似挺有希望的,但是实际上,这个index矩阵和描述曲面的二维矩阵还稍有不同。二维矩阵中的每一个位置的值,是第三维的高度,但是这里的index所表述的并不是第三维的高度,而是:从第一页(page),第一行(row),第一列(column)开始数起,那个点是3-D矩阵中的第几个点。 这似乎又要求我做一次转换,而这个转换似乎又不可避免地碰到for循环。
进一步地,我希望能将这个方法应用在一个7维的矩阵上。因此,如果使用for 循环必然会导致大量的时间浪费。
第二个:
还以三维矩阵作为起点。我们都知道,diag可以返回一个二维矩阵的对角线上的数值。但是它不能作用于更高维度的矩阵。仔细地想一想的话,其实diag的作用就是返回两个维度上,index相等的坐标中的值。现在的问题是:如果是一个三维的矩阵,是否也有类似的函数,输入为三维矩阵,以及两个维度,而返回的则是一个二维的矩阵,这个矩阵描述的是三维空间中使得输入的两个维度的index相等的“对角面”上的值?
再一次地,如果把三维矩阵扩展到七维的矩阵,仍然是输入矩阵,以及两个维度,返回一个六维“对角面”上的值,是否有现成的函数可以使用?
MATLAB学艺不精,还望大家赐教!:)
第一个:
以一个三维的矩阵为例。三维的矩阵可以看成是一个描述三维空间中的标量场的表达。而我们还有另一个二维的矩阵,描述了同一个三维空间中的一个曲面。现在我想问的是,如何不使用for循环的情况下,从以上的两个矩阵得到一个描述曲面上的标量场的二维矩阵?
我想过使用类似于A(index)的表达,其中A是3维的矩阵,而index是二维的一个矩阵。这样的返回结果是一个二维的矩阵。看似挺有希望的,但是实际上,这个index矩阵和描述曲面的二维矩阵还稍有不同。二维矩阵中的每一个位置的值,是第三维的高度,但是这里的index所表述的并不是第三维的高度,而是:从第一页(page),第一行(row),第一列(column)开始数起,那个点是3-D矩阵中的第几个点。 这似乎又要求我做一次转换,而这个转换似乎又不可避免地碰到for循环。
进一步地,我希望能将这个方法应用在一个7维的矩阵上。因此,如果使用for 循环必然会导致大量的时间浪费。
第二个:
还以三维矩阵作为起点。我们都知道,diag可以返回一个二维矩阵的对角线上的数值。但是它不能作用于更高维度的矩阵。仔细地想一想的话,其实diag的作用就是返回两个维度上,index相等的坐标中的值。现在的问题是:如果是一个三维的矩阵,是否也有类似的函数,输入为三维矩阵,以及两个维度,而返回的则是一个二维的矩阵,这个矩阵描述的是三维空间中使得输入的两个维度的index相等的“对角面”上的值?
再一次地,如果把三维矩阵扩展到七维的矩阵,仍然是输入矩阵,以及两个维度,返回一个六维“对角面”上的值,是否有现成的函数可以使用?
MATLAB学艺不精,还望大家赐教!:)