我想在MATLAB中找到矩陣中所有非零元素的座標。我知道find
使這非常簡單。問題是我需要在填充之前定義矩陣的長度。我相信這是不可能使用find
,因爲它會製作自己的矢量。實現matlab查找功能
所以我必須找到另一種方式。如果我正在尋找1個元素,它也會很容易。讓我用一個例子。假設我有一個500×500的矩陣M
,其中有60
。我想找到座標。所以我可以從下面開始:
for i = 1:500
for j = 1:500
if M(i,j) == 1
row = i;
col = j;
end
end
end
但是我想要多一點,我需要在填充之前定義一個向量的長度。所以我會做賭注,有小於100成的人在矩陣:
v = zeros(1,100)
w = zeros(1,100)
怎麼我基本上是想填補這個矢量如下。比方說,我已經填補了向量的N
元素,所以下一個會是:
for i = 1:500
for j = 1:500
if M(i,j) == 1 && i ~= v(1) && i ~= v(2) && ... && i ~= v(N) && j ~= v(1) && ... && i ~= v(N)
v(N+1) = i
w(N+1) = j
end
end
end
所以我需要另一個包含所有這一切,將通過矢量v
和w
的元素運行循環,我需要一些循環來確保if語句正在被使用。
有沒有人有任何想法如何做到這一點?
親切的問候,
傑西
我不知道我理解你,你知道你可以指定要查找多少個元素作爲參數返回? – Dan
對我來說,聽起來像[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)...請最後解釋你想達到的目的,而不是而不是詢問您在嘗試實現時遇到的問題。 –
你知道你的第二個實現是不正確的嗎?那一個不會找到所有1的正確。此外,如果你做得對,'[vw]'將等於'[v2 w2] = find(M)'...我只是不確定你在這裏得到什麼...... –