matrix - 转置矩阵ada

标签 matrix ada transpose

如何在 ADA 中转置矩阵?我试过了:

procedure transpose(A: in out matrix)  is
      B : matrix(1..A'Last(2),1..A'Last(1));
   begin
      for i in A'Range(1) loop
         for j in A'Range(2) loop
            B(j,i):= A(i,j);
         end loop;
      end loop;
      A := B;
   end transpose;

但当 A 不是方阵时它不起作用。 任何帮助将不胜感激。

最佳答案

作为一个过程,这永远不适用于非方阵,因为输出是与输入不同的约束类型。但是,您可以从合适的函数返回 B

   function transpose(A: in matrix) return matrix  is
      B : matrix(A'Range(2),A'Range(1));
   begin
      for i in A'Range(1) loop
         for j in A'Range(2) loop
            B(j,i):= A(i,j);
         end loop;
      end loop;
      return B;
   end transpose;

为结果创建具有正确约束类型的矩阵的最简单方法是声明 block :

declare
   Transposed : Matrix := Transpose(A);
begin
   -- operations on the transposed matrix
end;

关于matrix - 转置矩阵ada,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32523654/

相关文章:

r - 来自 R "image"函数的意外转置翻转输出

haskell - 矩阵的第一列作为 Haskell 中的行列表给出

matlab - 如何根据条件替换某些列值?

c++ - 在 Eigen 中求解稀疏上三角系统?

r - 如何 "transpose"向量列表?

arrays - Matlab - 仅在三维中转置 3D 矩阵

c++ - 如何创建用于添加两个矩阵的函数?它会返回什么?

file - Ada:从文件中读取

arrays - bool 数组使人作怪

generics - Ada 泛型和汇编代码生成