我有两个矩阵。第一个矩阵(文本文件1)是(89359,100),第二个矩阵(文本文件2)是(100,1143600)。
我必须从每个列中读取并提取第一列和第三列。
如果我们假设I
是第一个数据集的第一列的值而J
是第二个数据集的第一列的值,则a[I]
是第一个数据集的第三列的值AND { {1}}是第二个数据集的第三列的值。我必须计算b[J]
并将它们放在矩阵中。
我有3个问题:
1-代码的逻辑是否正确?
2-如果矩阵c,我如何初始化大小?
3-错误“行c[I,J] = a[I] * b[J]
中的名称l,k在当前上下文中不存在”。顺便说一句,我试着在代码的开头定义它们作为公共的变量。
textfile中的数据格式:
c[i, l] = a[i, j]*b[l, k]
代码:
0 1 -0.054558254
0 2 0.056978985
0 3 0.681467788
. . .........
. . .........
. . .........
0 100 0.976464969
1 1 -0.787895908
1 2 0.897567
.............
答案 0 :(得分:9)
你的确失去了记忆。你的矩阵大小为761GB。
通过将两个维度乘以元素的大小来计算其大小。在这种情况下,这是89359 * 1143600 * 8,即817,527,619,200字节。
即使您可以分配这么大的矩阵,也需要一个年龄来对它们进行算术运算。
你想将A和B乘以A,其中A是89359乘以100,B是100乘1143600.需要多少个浮点运算?要执行89359 * 100 * 1143600次乘法/加法运算。这是总共20,438,190,480,000个浮点运算。
无论您的问题是什么,您都需要找到更聪明的解决方案。例如,您的矩阵中是否存在可以利用的稀疏性?