matlab中的两个矩阵×是怎么个乘法来着
展开全部
这主要是因为计算机的工作原理:
matlab自带的a*b算法是在汇编级别编辑好的运算,计算机不用做多余的工作,直接对矩阵中的数据进行相乘处理。
计算机处理过程大体是:寻两个矩阵地址-加载乘法函数-运算并将结果写入相应地址-地址位加1-运算并将结果写入相应地址-...-运算并将结果写入相应地址-读取到结束位-结束运算。
而用for-loop自己编写乘法,本身就是调用了for-loop两个函数,这是需要时间的。同时,计算机要重新分配地址记录for函数循环中产生的变量,小点的矩阵还好说,阶数较高、数据较复杂时,计算机会花更多的时间来处理这些和相乘没有直接关系的代码和运算。
计算机处理过程大体是:加载for函数-为变量分配地址-为变量赋值-查询矩阵地址-查询矩阵阶数-判断大小-查询矩阵地址-读取相应数据-加载乘法函数-运算并将结果写入相应地址-为for变量赋值-查询矩阵地址-查询矩阵阶数-判断大小-...-判断大小-结束运算。明显要比a*b多了好多工作,所以会慢很多。
lz可以做个比较直观的实验:用循环编辑一个较复杂的迭代运算,在其中加入一行显示迭代次数的代码,记录运算时间。再在这行代码后面加上分号,再看看运算时间。你会发现后者时间比前者有明显的缩短。这就是因为计算机占用了一部分时间来处理显示数据的代码。
可以参考一些微机原理、汇编语言等材料会有更深的理解。
matlab自带的a*b算法是在汇编级别编辑好的运算,计算机不用做多余的工作,直接对矩阵中的数据进行相乘处理。
计算机处理过程大体是:寻两个矩阵地址-加载乘法函数-运算并将结果写入相应地址-地址位加1-运算并将结果写入相应地址-...-运算并将结果写入相应地址-读取到结束位-结束运算。
而用for-loop自己编写乘法,本身就是调用了for-loop两个函数,这是需要时间的。同时,计算机要重新分配地址记录for函数循环中产生的变量,小点的矩阵还好说,阶数较高、数据较复杂时,计算机会花更多的时间来处理这些和相乘没有直接关系的代码和运算。
计算机处理过程大体是:加载for函数-为变量分配地址-为变量赋值-查询矩阵地址-查询矩阵阶数-判断大小-查询矩阵地址-读取相应数据-加载乘法函数-运算并将结果写入相应地址-为for变量赋值-查询矩阵地址-查询矩阵阶数-判断大小-...-判断大小-结束运算。明显要比a*b多了好多工作,所以会慢很多。
lz可以做个比较直观的实验:用循环编辑一个较复杂的迭代运算,在其中加入一行显示迭代次数的代码,记录运算时间。再在这行代码后面加上分号,再看看运算时间。你会发现后者时间比前者有明显的缩短。这就是因为计算机占用了一部分时间来处理显示数据的代码。
可以参考一些微机原理、汇编语言等材料会有更深的理解。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询