Aja*_*ama 2 transpose ada matrix
如何在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;
Run Code Online (Sandbox Code Playgroud)
但是当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;
Run Code Online (Sandbox Code Playgroud)
为结果创建右约束类型矩阵的最简单方法是声明块:
declare
Transposed : Matrix := Transpose(A);
begin
-- operations on the transposed matrix
end;
Run Code Online (Sandbox Code Playgroud)