我有一個字串對的元胞陣列:
str={'A','BB','A','A'}
pairs=str(nchoosek(1:numel(str),2));
pairs =
6×2 cell array
{'A' } {'BB'}
{'A' } {'A' }
{'A' } {'A' }
{'BB'} {'A' }
{'BB'} {'A' }
{'A' } {'A' }
并且我希望無論順序如何都能夠為唯一對建立索引,因為A-BB和BB-A是同一對。該函式unique只給出唯一的標簽 A,BB。
當我嘗試時unique(cell2mat(pairs),'rows')出現錯誤,因為“連接的陣列的維度不一致”。
當我嘗試table2cell(unique(cell2table(pairs)))訂單很重要時,我得到了
3×2 cell array
{'A' } {'A' }
{'A' } {'BB'}
{'BB'} {'A' }
我希望能夠find\ismember這樣只有
{'A' } {'A' }
{'A' } {'BB'}
是唯一的,并且A-BB包含的索引也是BB-A如此。請幫忙?
uj5u.com熱心網友回復:
您可以使用sort(..., 2)在每一行內進行排序pairs,然后應用unique(... 'rows')兩個輸出。但是,這種使用sort不適用于 char 向量的元胞陣列。解決方法是轉換為字串陣列:
[result, index_unique, index_repeated] = unique(sort(string(pairs), 2), 'rows');
如果您需要將結果作為字符向量元胞陣列,您可以轉換回來:
result = arrayfun(@char, result, 'UniformOutput', false);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/393317.html
上一篇:從Python運行Matlab腳本時如何獲取Matlab錯誤訊息
下一篇:旋轉離散資料集Octave
