我寫這個(column
,row
和value
是向量):迭代通過矢量
for k = column
for l = row ((column == k) & (row > k))
A_lk = value (row == l & column == k);
的問題是,k
和l
是矢量,所以我不能寫row == l
或column == k
(我希望這些i
爲其中row (i)
是l
和column (i)
是k
)。
確切的錯誤是: 「mx_el_eq: nonconformant arguments (op1 is 46x1, op2 is 13x1)
」。
我怎麼可以使用列中的所有元素,並用一行((column == k) & (row > k))
一個?
我想過是這樣的:
for i = 1:length(column)
k = column (i)
是否有任何其他的可能性?
編輯:
正如我說,我有一個稀疏矩陣(N,N)。我必須遍歷所有列和每列(比如k),我必須遍歷從k + 1到n的行,並對非零元素進行操作。
例子:
row = [1 3 3 2 1 2] % row > 2 is [0 1 1 0 0 0]
column = [1 1 2 2 2 3] % column == 2 is [0 0 1 1 1 0]
value = [8 7 9 5 6 7] %(column == 2) & (row > 2) is [0 0 1 0 0 0]
row ((column == 2) & (row > 2))
是3
value (row == 3 & column == 2)
是9
我想要的代碼做什麼:
k in {1, 2, 3} %writing this I realized I did some useless operations,
%since I want just the distinct values of column
k = 1:
l in row ((column == 1) & (row > 1)) = {3}
l = 3:
A_31 = value (row == 3 & column == 1) = 7
%rest of the code
k = 2:
l in row ((column == 2) & (row > 2)) = {3}
l = 3
A_32 = value (row == 3 & column == 2) = 9
%rest of the code
k = 3:
l in row ((column == 3) & (row > 3)) = nothing
的'對於i = 1:長度(列),K =柱(我)'似乎不錯編碼 – tashuhka
是的,我知道我想要做什麼,但似乎有點不自然MATLAB。 – nowembery
這似乎對我來說很自然,但讓我們等待其他SO用戶給他們的意見.. – tashuhka