繁体   English   中英

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

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

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

先感谢您。

如果“解析每一行”是指一个逐行获取每一行的循环,则您只需要在转置矩阵上for循环。 这是有效的,因为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 中通常可以避免循环,而使用矢量化代码。 对于您提到的特定情况,计算A每对行之间的点积与计算A乘以本身转置的矩阵乘积相同:

A*A.'

但是,对于复矩阵的一般情况,点积是用复共轭定义的,因此您应该使用复共轭转置

P = A*A';

现在P(m,n)包含An行和第m行的点积。 您要测试的条件相当于P是一个对角矩阵

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM