這就是問題:MATLAB - 避免在單元陣列內的矢量重複的值,並採取下一個
我具有形式indx{ii}
其中每個ii
是大小1xNii
(陣列上的單元陣列,這意味着該陣列具有不同的尺寸)。 另一個格式爲indy{jj}
的單元陣列,其中每個jj
是與ii
大小相同的數組。
問題是我想創建一個函數來評估indx{:}
數組中的值,並取第一個不重複的值,如果是重複值,則取下一個值。
我會試着用一個例子來解釋。假設我們有indx
和indy
是單元陣列:
indx{1} = [1 3 2 7];
indx{2} = [3 8 5];
indx{3} = [3 6 2 9];
indx{4} = [1 3 4];
indx{5} = [3 1 4];
indy{1} = [0.12 0.21 0.31 0.44];
indy{2} = [0.22 0.34 0.54];
indy{3} = [0.13 0.23 0.36 0.41];
indy{4} = [0.12 0.16 0.22];
indy{5} = [0.14 0.19 0.26];
我想要的代碼做的是採取的第一個值和indx
和indy
相當於不重複。因此,對於該示例答案應該是:
ans=
indx{1} = 1;
indx{2} = 3;
indx{3} = 6;
indx{4} = 4;
indx{5} = [];
indy{1} = 0.12;
indy{2} = 0.22;
indy{3} = 0.23;
indy{4} = 0.22;
indy{5} = [];
在ans
,爲indx{1}
代碼需要1
,因爲是第一次,它不是重複,並採取在indy
等值。然後,對於indx{2}
,它需要3
,因爲它是第一個值,並且在之前的任何數組中都不會重複爲第一個值。但對於ind{3}
它需要6
,因爲重複的第一個值是3
,並且在indy
(即0.23
)中採用等效值6
。對於ind{4}
,第一個和第二個值已重複爲第一個值,因此代碼需要4
及其等效的indy
。最後,對於indx{5}
,因爲所有值都已重複,所以代碼應該沒有任何價值。
你試過了一個循環嗎?似乎是一個不錯的選擇...... – thewaywewalk
@thewaywewalk我剛剛發佈了該解決方案。我想知道是否可以通過'cellfun'來完成... – Adriaan
indy {3}的期望返回值是否正確? – excaza