我的代码中有两个大矩阵,它们具有相同的列数和不同的行数。喜欢A(20000X4000)
和B(30000X4000)
。两者都是 0-1 稀疏的。
我应该检查 A 的每一行和 B 的所有行,并计算常见 1 的数量。例如 ifA(1,:)=[0 1 0 1 1]
和B([1 2],:)=[1 1 1 1 1;0 0 0 1 1]
,我需要得到结果3
和2
。
假设有一个大的 0-1 矩阵C(50000X4000)
,并且它的行被标记为 typeA
或 type B
。我应该比较所有行A
和B
一起并枚举1。如果 A 和 B 的每一行中 1 的数量大于某些界限,那么我将使用 A 和 B 的那些行进行其余的计算。所以,我什至不需要存储A
and B
,我需要的只是行索引对的列表。类似的东西[(3,2),(3,5),...]
表明我应该使用的第三行A
和第二行,以及B
第三行A
和第五行B
,依此类推。
我想到的第一件事是A*B'
,它给出了正确的结果,但实际上它非常昂贵,在某些情况下不可能进行这种乘法。
我将矩阵转换为单一数据类型,它变得有点快。稀疏没有帮助。
这个任务看起来很简单,只计算 的每一行A
和所有行的常见 1 B
,但实现起来并不容易。考虑到代码应该像 1000 次一样完成这个任务,那么这实际上是不可能的。
知道如何在不乘法的情况下枚举常见的吗?(顺便说一句,循环也没有帮助)。
谢谢。