繁体   English   中英

矩阵乘法C语言

[英]Matrix Multiplication C language

因此,矩阵乘法存在问题。 我必须将矩阵的值存储在文件中,然后将它们相乘。 当我尝试乘以900x900矩阵时,会出现问题:分段错误(核心转储),但800x800可以正常工作)。 我的代码有一部分:创建用于存储的文件:

FILE *A, *B;
int num = atoi(argv[1]);
float a[num][num];
float b[num][num];
A = fopen(argv[2],"r");
B = fopen(argv[3],"r");
for (int i = 0; i < num; ++i)
{
    for (int j = 0; j < num; ++j)
    {
        fscanf(A,"%f",&a[i][j]);
    }
}
for (int i = 0; i < num; ++i)
{
    for (int j = 0; j < num; ++j)
    {
        fscanf(B,"%f",&b[i][j]);
    }
}

所以我没有写矩阵乘法的函数,因为它有效

您的两个float可变长度数组占用2 * 900 2 * 4字节-略超过6Mb。 VLA通常在堆栈上创建,其大小在系统和进程之间会有所不同,但在现代台式机系统上通常约为2至8 Mb。

创建一个在堆栈上很大的数组是不合理的,并且失败也就不足为奇了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM