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

我想知道以下最佳做法是什么:

我有两个矩阵, a1 (500 x 40)和a2 (1 x 500)。对于布尔型的a1 ,我想根据特定列中的值(即true或false)将数组分开。我还需要在a2分隔相应的条目。

我可以通过几个循环来做到这一点,或者甚至可以通过串联a1和a2进行逻辑测试,然后再次将它们分开,但是我想知道是否有一种常用的方法来处理这样的事情吗?



回答:

这是一个猜测,但这听起来像是要提取a2相应值的a1中每个列的真实条目。由于您说a1是布尔值(在MATLAB中称为逻辑类型),因此可以通过以下方式使用逻辑索引

vals1 = a2(a1(:,1)); %# Use column 1 of a1 as an index into a2 vals5 = a2(a1(:,5)); %# Use column 5 of a1 as an index into a2 ... 这是一个例子:

>> a1 = logical(randi([0 1],10,4)) %# Make a random logical matrix a1 = 0 0 1 1 0 1 0 0 1 1 1 1 1 0 1 0 0 0 1 1 0 0 1 0 0 1 1 0 1 0 0 0 1 1 0 1 1 0 0 0 >> a2 = 1:10; >> a2(a1(:,1)) %# Get the values in a2 corresponding %# to the ones in column 1 of a1 ans = 3 4 8 9 10 >> a2(a1(:,2)) %# Get the values in a2 corresponding %# to the ones in column 2 of a1 ans = 2 3 7 9

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


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

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



所有时间均为北京时间。现在的时间是 01:15


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