Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
高级会员
注册日期: 2019-11-21
帖子: 3,006
声望力: 66 ![]() |
![]()
我有矩阵:
a = [ 1 2 3 4; 2 4 5 6; 4 6 8 9] 我想将每一行与其他两行一一比较。如果它们共享相同的密钥,那么结果将告诉他们具有公共密钥。 回答: 这是一个解决方案(可以推广到比问题中的样本更大的矩阵): comparisons = nchoosek(1:size(a,1),2); N = size(comparisons,1); keys = cell(N,1); for i = 1:N keys{i} = intersect(a(comparisons(i,1),:),a(comparisons(i,2),:)); end 函数NCHOOSEK用于生成行比较的所有唯一组合。对于问题中的矩阵a ,您将获得comparisons = [1 2; 1 3; 2 3] ,这意味着我们需要比较行1和2,然后比较1和3,最后是2和3。 keys是一个存储每个比较结果的单元格数组 。对于每个比较,函数INTERSECT用于查找公共值(即键)。用于矩阵a在给定的问题,就会得到keys = {[2 4], 4, [4 6]} 更多&回答... |
![]() |
![]() |