微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

连接不同大小的二进制矩阵

如何解决连接不同大小的二进制矩阵

| 令Data为大小为n x 2的非负矩阵。 现在,数据矩阵分为大小为n1 x 2的数据_1和大小为n2 x 2的数据_2。 Data_1或Data_2 数据_1和数据_2 Data_1和Data_2都不 对应于Data_1和Data_2矩阵,我们分别具有大小为n1 x k1的二进制矩阵DataIndicator1和大小为n2 x k2的DataIndicator2。 现在我想为大小为n x(k1 + k2)的数据创建一个新的二进制矩阵,以便 当来自Data的行属于Data_1或Data_2时,所得二进制矩阵中的行分别来自DataIndicator1或DataIndicator2,其他条目为0。 当来自Data的行同时属于Data_1或Data_2时,结果指示符矩阵中的该行来自串联在一起的DataIndicator1和DataIndicator2。 如果数据中的行既不属于Data_1也不属于Data_2,则结果指标矩阵中的行应为0 任何人都可以为我提供在Matlab中实现此目标的有效方法吗?     

解决方法

        如果您的任何数组中都没有重复的行,那么使用ISMEMBER可以直接回答:
[tf1,idx1] = ismember(data,data_1,\'rows\'); %# find where the rows of data_1 are in data
[tf2,idx2] = ismember(data,data_2,\'rows\'); %# find where the rows of data_2 are in data

n = size(data,1);
k1 = size(dataIndicator1,2);
k2 = size(dataIndicator2,2);

binaryMatrix = false(n,k1+k2);
binaryMatrix(tf1,1:k1) = dataIndicator1(idx1(tf1),:);
binaryMatrix(tf2,k1+1:k2) = dataIndicator1(idx2(tf2),:);
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。