从文本文件中提取数据并将它们相乘时出错

时间:2014-02-17 14:46:59

标签: c#

我有两个矩阵。第一个矩阵(文本文件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
.............

1 个答案:

答案 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个浮点运算。

无论您的问题是什么,您都需要找到更聪明的解决方案。例如,您的矩阵中是否存在可以利用的稀疏性?