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