簡體   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