Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-10, 16:49   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 如何在同一矩阵中将一行的元素与其他行的元素进行比较

我有矩阵:

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]}



更多&回答...
poster 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 22:42


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.