矩阵换位而不使用循环..?

时间:2013-01-21 02:55:13

标签: matrix

如何在不使用任何循环的情况下转置矩阵。如果它是nxn,我们可以将对角线作为基础和移位元素。但是对于nxm矩阵,我认为这个解决方案是不可行的。

无论如何,要阅读或存储,我们需要使用循环... ??

没有循环的任何解决方案.. ??

2 个答案:

答案 0 :(得分:0)

如果您在开始时已知矩阵的维度,那么您将不需要任何循环。因为您可以交换矩阵位置以整体转置矩阵。在第一个条件中,即使尺寸为m x n,也不需要循环。

但是如果你在开始时不知道矩阵的维数,那么我们肯定需要循环迭代矩阵来读取某个位置并在转置矩阵的过程中交换到其他位置。

答案 1 :(得分:0)

要存储整个转置矩阵,您肯定需要使用循环。这并不是什么大问题,因为存储矩阵无论如何都会使用循环,因为你需要循环遍历矩阵的成员来存储它。

如果您只是阅读它,您可以使用矩阵转置的定义,只需翻译指标。例如,在C:

int getTransposedElement(int i,int j, int** originalMatrix) {
  return originalMatrix[j,i];
}

如果您使用的是具有类和多态的语言,则可以创建一个自动执行此操作的新矩阵类。这样做的另一个好处是可以避免复制原始矩阵,从而节省内存并允许对转置矩阵的更改反映在原始矩阵中。