让数据为大小为 n x 2 的非负矩阵。
现在数据矩阵分为 Data_1 ,其大小为 n1 x 2 , Data_2 的大小为 n2 x 2 。 数据中的一行可能属于
对应 Data_1 和 Data_2 矩阵,我们有二进制矩阵 DataIndicator1 ,大小 n1 x k1 和 DataIndicator2 分别为 n2 x k2 。
现在我想为数据( n x(k1 + k2)创建一个新的二进制矩阵,以便
任何人都可以在matlab中为我提供有效的方法吗?
答案 0 :(得分:3)
如果您的任何数组中没有重复的行,则可以使用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),:);