怎样使用MATLAB计算矩阵乘法 matlab矩阵乘法问题
怎样使用MATLAB计算矩阵乘法
* 表示矩阵与矩阵相乘,满足线性代数上学的矩阵与矩阵的乘法,
.*表示矩阵中元素与元素相乘,这两个矩阵的维数必需相同。
例如:A.*B,那么A是m行n列的话,B必须也是m行n列。
其他的如: “/ 与 ./ ” ,“.^ 与 ^ ”的含义都是一样的
matlab矩阵乘法问题
这主要是因为计算机的工作原理:
MATLAB自带的A*B算法是在汇编级别编辑好的运算,计算机不用做多余的工作,直接对矩阵中的数据进行相乘处理。
计算机处理过程大体是:寻两个矩阵地址-加载乘法函数-运算并将结果写入相应地址-地址位加1-运算并将结果写入相应地址-...-运算并将结果写入相应地址-读取到结束位-结束运算。
而用for-loop自己编写乘法,本身就是调用了for-loop两个函数,这是需要时间的。同时,计算机要重新分配地址记录for函数循环中产生的变量,小点的矩阵还好说,阶数较高、数据较复杂时,计算机会花更多的时间来处理这些和相乘没有直接关系的代码和运算。
计算机处理过程大体是:加载for函数-为变量分配地址-为变量赋值-查询矩阵地址-查询矩阵阶数-判断大小-查询矩阵地址-读取相应数据-加载乘法函数-运算并将结果写入相应地址-为for变量赋值-查询矩阵地址-查询矩阵阶数-判断大小-...-判断大小-结束运算。明显要比A*B多了好多工作,所以会慢很多。
LZ可以做个比较直观的实验:用循环编辑一个较复杂的迭代运算,在其中加入一行显示迭代次数的代码,记录运算时间。再在这行代码后面加上分号,再看看运算时间。你会发现后者时间比前者有明显的缩短。这就是因为计算机占用了一部分时间来处理显示数据的代码。
可以参考一些微机原理、汇编语言等材料会有更深的理解。