首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >矩阵乘法复制阵列指数超出界误差

矩阵乘法复制阵列指数超出界误差
EN

Stack Overflow用户
提问于 2015-03-29 21:02:03
回答 2查看 354关注 0票数 1

这是这里的第一篇文章,如果我的问题不符合要求的标准,请原谅我。

我编写了一段代码,它从两个独立的文件中获取两个矩阵的输入,并执行乘法并将数据输出到一个新文件中。

它给出了2x3或3x3矩阵的完美输出。如果输入4x4矩阵,将数组索引从绑定运行时异常中提取出来。我不明白为什么我会动态创建索引

我在第40行从绑定异常中得到一个数组索引。

我犯了个错误。

  1. 列表项目 公共类MM {私有BufferedReader br;私有int sum = 0;私有最终静态字符串matrixA="matrixA.txt";私有最终静态字符串matrixB="matrixB.txt";公共静态空主(String[] args) {新MM().MathMultiplicationValues(matrixA,matrixB);}私有空MathMultiplicationValues(String mat1,String mat2) { try { br =新BufferedReader(新FileReader(mat1));字符串行;int mat1rows = 0,mat1cols = 0,mat2rows = 0,mat2cols = 0;while (line=br.readLine() != null) { mat1cols = line.split(“").length + 1;mat1rows++;} br.close();//关闭文件br =新BufferedReader(新FileReader(mat2));//从文件中读取输入。时间((line = br.readLine()) != null) { mat2cols = line.split(“").length + 1;mat2rows++;} int mat1vals =新intmat1rows;int mat2vals =新intmat2rows;br.close();br =新BufferedReader(新FileReader(mat1));for (int i= 1;i< mat1rows + 1;i++) { line = br.readLine();String[] colvals = line.split(“");for (int j= 1;j< mat1cols;j++) { mat1valsi = Integer.parseInt(colvalsj - 1);} br.close();br =新BufferedReader(新FileReader(mat2));for (int i= 1;I< mat2rows + 1;i++) { line = br.readLine();String[] colvals = line.split(“");for (int j= 1;j< mat2cols;j++) { mat2valsi = Integer.parseInt(colvalsj - 1);} br.close();若((mat1cols-1) == mat2rows) { int =新intmat1rows + 1;for (int = 1;i< mat1rows + 1;i++) {//循环做矩阵乘法。(int j= 1;j< mat1cols;j++) { for (int k= 0;k< mat2rows + 1;k++) sum = sum + mat1valsi * mat2valsk;resltmati = sum;sum = 0;} final PrintWriter pw =新PrintWriter("Answer.txt");//创建一个名为矩阵应答的新文件。对于(int i= 1;i< mat1rows + 1;i++) { for (int j= 1;j< mat2cols;j++) { pw.print(resltmati +“");//写入输出以文件MatrixAnswer } pw.println();} pw.close();} else /如果不等于行的列中没有任何列传递给else块。System.out.println(“由于列不等于行而不可能实现矩阵的乘法”);} catch (除e外){ e.printStackTrace();}
EN

回答 2

Stack Overflow用户

发布于 2015-03-29 21:41:23

可能是因为这个

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
for (int i = 1; i < mat1rows + 1; i++) {
    line = br.readLine();
    String[] colvals = line.split(" ");
    for (int j = 1; j < mat1cols; j++) {
        mat1vals[i][j] = Integer.parseInt(colvals[j - 1]);

    }

}

最后一次迭代的i = mat1rows,即OOB。将for (int i = 1; i < mat1rows + 1; i++)更改为for (int i = 1; i < mat1rows; i++)

票数 1
EN

Stack Overflow用户

发布于 2015-03-29 23:57:31

正如您在分配中使用的那样,结果矩阵的维度是mat1rows x mat2cols。因此,在resltmat[i][j]的计算中,索引i有界mat1rows (check),索引j有上界mat2cols (fail)。因此,将j的范围从mat1cols更改为mat2cols

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29338693

复制
相关文章
矩阵乘法
#include <stdio.h> #include <stdlib.h> #include <math.h> #define LEN 3
WindCoder
2018/09/20
8060
[每日一题]矩阵乘法
本次的题目来源于C语言网比赛栏目八月月赛第一题,记得去试试看看自己能不能AC哦!!! 题目描述 给定一个N阶矩阵A,输出A的M次幂(M是非负整数) 例如: A = 1 2 3 4 A的2次幂 7 10 15 22 输入 第一行是一个正整数N、M(1< =N< =30, 0< =M< =5),表示矩阵A的阶数和要求的幂数 接下来N行,每行N个绝对值不超过10的非负整数,描述矩阵A的值 输出 输出共N行,每行N个整数,表示A的M次幂所对应的矩阵。相邻的数之间用一个空格隔开
编程范 源代码公司
2018/04/18
1.3K0
09:矩阵乘法
09:矩阵乘法 总时间限制: 1000ms 内存限制: 65536kB描述 计算两个矩阵的乘法。n*m阶的矩阵A乘以m*k阶的矩阵B得到的矩阵C 是n*k阶的,且C[i][j] = A[i][0]*B[0][j] + A[i][1]*B[1][j] + …… +A[i][m-1]*B[m-1][j](C[i][j]表示C矩阵中第i行第j列元素)。 输入第一行为n, m, k,表示A矩阵是n行m列,B矩阵是m行k列,n, m, k均小于100 然后先后输入A和B两个矩阵,A矩阵n行m列,B矩阵m行k列,
attack
2018/04/03
1.6K0
理解矩阵乘法
大多数人在高中,或者大学低年级,都上过一门课《线性代数》。这门课其实是教矩阵。 刚学的时候,还蛮简单的,矩阵加法就是相同位置的数字加一下。 矩阵减法也类似。 矩阵乘以一个常数,就是所有位置都乘以这个数
ruanyf
2018/04/13
1.5K0
理解矩阵乘法
矩阵乘法问题
问题描述 给定n个矩阵:A1,A2,...,An,其中Ai与Ai+1是可乘的,i=1,2...,n-1。确定计算矩阵连乘积的计算次序,使得依此次序计算矩阵连乘积需要的数乘次数最少。 ---- 矩阵乘法
我没有三颗心脏
2018/04/26
1.5K0
矩阵乘法问题
java矩阵类,矩阵的乘法
问题如下 矩阵成积.jpg 我采用的是3重循环,先计算的列的结果,应该还可以先计算行的结果,然后求出矩阵的乘法。没有过多的技巧,就是循环的使用。 相关的code package day20180
热心的社会主义接班人
2018/08/02
1.6K0
java矩阵类,矩阵的乘法
[动态规划] 矩阵链乘法问题
矩阵链乘法问题是指给定一串矩阵序列M₁M2..Mn,求至少需要进行多少次乘法运算才能求得结果
racaljk
2018/08/31
1.8K0
[动态规划] 矩阵链乘法问题
Python|详解矩阵乘法
矩阵相信大家都知道,是线性代数中的知识,就是一系列数集。顾名思义,数字组成的矩形,例如:
算法与编程之美
2020/03/25
2.6K0
彻底理解矩阵乘法
今天的角度比较清奇,我们来讲讲矩阵的乘法。当然了,我告诉你的肯定不是大学教科书上那些填鸭式的云里雾里的计算规则,你可能将规则背下来了,但完全不理解为什么会这样。别怕,我将会在这篇文章中为你带来矩阵乘法的全新体验,就算你大学时代学的高数全忘了也能看懂这篇文章。
米开朗基杨
2019/12/06
1.8K0
彻底理解矩阵乘法
算法训练 矩阵乘法
问题描述   输入两个矩阵,分别是m*s,s*n大小。输出两个矩阵相乘的结果。 输入格式   第一行,空格隔开的三个正整数m,s,n(均不超过200)。   接下来m行,每行s个空格隔开的整数,表示矩阵A(i,j)。   接下来s行,每行n个空格隔开的整数,表示矩阵B(i,j)。 输出格式   m行,每行n个空格隔开的整数,输出相乘後的矩阵C(i,j)的值。 样例输入 2 3 2 1 0 -1 1 1 -3 0 3 1 2 3 1 样例输出 -3 2 -8 2
AI那点小事
2020/04/20
6410
算法训练 矩阵乘法
基础练习 矩阵乘法
  给定一个N阶矩阵A,输出A的M次幂(M是非负整数)   例如:   A =   1 2   3 4   A的2次幂   7 10   15 22
刘开心_1266679
2019/02/14
8610
#100. 矩阵乘法
矩阵乘法 内存限制:256 MiB时间限制:2000 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: 匿名 提交提交记录统计讨论测试数据 题目描述 这是一道模板题。 分别给定 n×p n \times pn×p 和 p×m p \times mp×m 的两个矩阵 A AA 和 B BB,求 A×B A \times BA×B。 输入格式 第一行三个正整数 n nn、p pp、m mm,表示矩阵的长宽。 之后的 n nn 行,每行 p pp 个整数,表示矩阵 A AA。 之后的 p pp 行,每
attack
2018/04/11
1.9K0
#100. 矩阵乘法
Java-矩阵乘法
"Never, never, never, never give up."  -----Winston Leonard Spencer Churchill
圆号本昊
2021/09/24
8940
Java-矩阵乘法
性能比拼!超详细的Tengine GEMM矩阵乘法汇编教程
Tengine 是OPEN AI LAB 针对前端智能设备开发的软件开发包,核心部分是一个轻量级,模块化,高性能的AI 推断引擎,并支持用DLA、GPU、xPU作为硬件加速计算资源异构加速。
CV君
2019/12/27
2.2K0
matlab 稀疏矩阵 乘法,Matlab 矩阵运算[通俗易懂]
说明:这一段时间用Matlab做了LDPC码的性能仿真,过程中涉及了大量的矩阵运算,本文记录了Matlab中矩阵的相关知识,特别的说明了稀疏矩阵和有限域中的矩阵。Matlab的运算是在矩阵意义下进行的,这里所提到的是狭义上的矩阵,即通常意义上的矩阵。
全栈程序员站长
2022/09/12
3K0
详解Python中的算术乘法、数组乘法与矩阵乘法
(2)列表、元组、字符串这几种类型的对象与整数之间的乘法,表示对列表、元组或字符串进行重复,返回新列表、元组、字符串。
Python小屋屋主
2021/05/11
9.4K0
详解Python中的算术乘法、数组乘法与矩阵乘法
SDAccel矩阵乘法优化(三)
承接第二篇Local Memory的实现方法,接下来进一步进行矩阵乘法的优化处理。本文主要解决gmem carry dependency的问题。在这里,不采用Max Memory Ports的方法,因为采用多个接口会消耗大量的LUT资源,并且大大的限制时钟频率的提升。其实,前面分析过了造成gmem carry dependency的原因,在矩阵乘法的实现过程中,我们完全可以将两个输入的数据分离,不需要在一个for循环中同时进行数据的读取而导致一个for循环在pipeline的过程中需要对两个接口进行读取的问题。因此我们改进代码,将两个输入数据分离并实现Burst突发传输。
AI异构
2020/07/29
6260
SDAccel矩阵乘法优化(三)
线段树维护矩阵乘法
Adding two numbers several times is a time-consuming task, so you want to build a robot. The robot should have a string of characters on its memory that represents addition instructions. Each character of the string, , is either or.
ACM算法日常
2019/11/25
6630
Strassen矩阵乘法问题(Java)
矩阵乘法是线性代数中最常见的问题之一 ,它在数值计算中有广泛的应用。 设A和B是2个nXn矩阵, 它们的乘积AB同样是一个nXn矩阵。 A和B的乘积矩阵C中元素C[i][j]定义为:
WHYBIGDATA
2023/01/31
7010
Strassen矩阵乘法问题(Java)
SDAccel矩阵乘法优化(四)
现在经过前面两次优化后,代码的组织结构没有什么问题了,现在的关键问题是:矩阵运算的嵌套for循环仅仅实现了内层的pipeline,因为外层for循环无法对内部的for循环flatten,所以外面两层的for循环没有实现pipeline。要解决这个问题,最直接的思路就是将最内层的for循环直接进行循环展开,进一步提高计算过程的并行度。但是在进行循环展开的过程中,需要将内层用到的数组进行切割,否则将无法进行unroll。因此,我们将用到的指令有三个:内层for循环要进行循环展开(unroll),并行计算用到的数组要进行数组切割(array partition),次外层的for循环要流水起来(pipeline)。
AI异构
2020/07/29
1.3K0
SDAccel矩阵乘法优化(四)

相似问题

利用阵列产生误差结果的矩阵乘法

30

matlab中的指数超矩阵维数误差

12

矩阵乘法误差

19

矩阵乘法,索引出界异常

13

Matlab矩阵乘法误差

18
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文