我是 Octave 的新手,我想知道是否有辦法決議矩陣的每一行并單獨使用它。最終,我想使用這些行來檢查它們是否都相互垂直(點積必須等于 0 才能使兩個向量相互垂直)所以如果您對此有一些想法,我很想聽聽他們。另外我想知道是否有一個函式來確定向量的長度(或幅度)。
先感謝您。
uj5u.com熱心網友回復:
如果“決議每一行”是指一個逐行獲取每一行的回圈,則您只需要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)包含n第 -th 和m-th 行的點積A。您要測驗的條件相當于P是一個對角矩陣:
result = isdiag(P); % gives true of false
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/350373.html
