arrays - 从 Matlab 元胞数组中获取唯一行

标签 arrays matlab unique cell

我在 Matlab 中有一个 Nx4 元胞数组,看起来像这样:

id1 word11 word12 word13
....
id2 word21 word22 word32
....   
idN wordN1 wordN2 wordN3

其中四列中的每一列都包含一个字符串,第二列(word11... wordN1) 可以有重复的值。我想获得另一个元胞数组,但根据第二列具有唯一的行。因此,在前面的示例中,如果 word21 与 wordN1 相同,则生成的数组应仅包含以下两行(选择重复项的哪一行并不重要):

id1 word11 word12 word13    
....    
idN wordN1 wordN2 wordN3

我尝试了 unique(cellArray{2}) 但它只返回具有唯一值的第二列,而我想要整行。我怎样才能做到这一点?

谢谢

最佳答案

我相信以下应该做到这一点:

Z = {'a', 'b'; 'a', 'c'; 'a', 'c'; 'a', 'd'; 'a', 'b'};
[~, I1] = unique(Z(:, 2));
I1 = sort(I1);
Soln = Z(I1, :);

解释一下?我使用 unique 的可选附加参数来获取第二列中唯一元素的索引。然后,我对该索引进行排序,以便保留 Z 的原始顺序。最后,我检索由 I1 索引的 Z 行。

注意,sort 实际上保留了原始顺序而不是对其进行排序,这有点不直观:-) 原因是 I1 包含了独特的元素。因此,对其进行排序会按从小到大的顺序返回行索引,从而保留 Z 中的原始顺序。

关于arrays - 从 Matlab 元胞数组中获取唯一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12575182/

相关文章:

javascript - 如何使用嵌套 array.map 将板上的位置从 React JS 中的 Board 发送到 Cell 组件

matlab - Matlab 条形图中的图例

Java尝试用唯一的数字填充int数组

database - 将组合存储为唯一总和的简单数字模式

c++ - vector 中的C++唯一值?

java - 列表.add ("stuff");崩溃

javascript - 数组不适用于 If 语句

javascript - 填充二维数组 "line by line"JavaScript/NodeJS

matlab - 图像处理中的平均掩模和拉普拉斯掩模

c++ - 在 64 位机器上编译 32 位 matlab 应用程序 (c++)