有没有办法解析 Octave 中矩阵的每一行?

Is there a way to parse each row of a matrix in Octave?

我是 Octave 的新手,我想知道是否有办法解析矩阵的每一行并单独使用它。最后我想用这些行来检查它们是否都相互垂直(点积必须等于 0 两个向量才能相互垂直)所以如果你对此有一些想法我很想听听他们。另外我想知道是否有一个函数可以确定矢量的长度(或幅度)。

提前致谢。

如果“解析每一行”是指逐行逐行的循环,则只需要一个 for loop over the transposed 矩阵。这是可行的,因为 for 循环采用其参数的连续

示例:

A = [10 20; 30 40; 50 60];
for row = A.'; % loop over columns of transposed matrix 
   row = row.'; % transpose back to obtain rows of the original matrix
   disp(row); % do whatever you need with each row
end

但是,在 Matlab/Octave 中通常可以避免循环,而采用 vectorized code. For the specific case you mention, computing the dot product between each pair of rows of A is the same as computing the matrix productA 次自身转置:

A*A.'

然而,对于复矩阵的一般情况,点积是用复共轭定义的,所以你应该使用 complex-conjugate transpose:

P = A*A';

现在 P(m,n) 包含 A 的第 n 行和第 m 行的点积。您要测试的条件相当于 Pdiagonal matrix:

result = isdiag(P); % gives true of false