matlab矩阵循环赋值含有矩阵的循环如何向量化

专业文档是百度文库认证用户/机构上传的专业性文档,文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“专业文档”标识的文档便是该类文档。

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取,非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档。

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取,非会员用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档。

付费文档是百度文库认证用户/机构上传的专业性文档,需要文库用户支付人民币获取,具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档。

共享文档是百度文库用户免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定。只要带有以下“共享文档”标识的文档便是该类文档。

用for循环和向量计算是非常常见的。例如,下面的代码片段用for循环计算1到100之间的所有整数的平方,平方根,立方根。

下面是用向量计算上面的问题:

尽管两种算法得到了相同的结果,但for循环算法比向量算法慢15倍还多。这是由于MATLAB通过每一次循环时,每行都要翻译执行一次。for循环的实现相当于MATLAB执行了300行代码。相反,如果用向量算法,MATLAB只需要翻译执行4行代码。所以用向量语句它的执行速度非常快。

向量算法的缺点是需要很大的内存,因为一些间接的数组需要创建。MATLAB中,用向量算法代替循环的算法的过程称之为向量化。而向量化能改进许多的MATLAB程序。

在循环执行开始之前,预先分配一个数组,这样也能大大增加循环运行的速度。

逻辑数据类型在MATLAB中并不真实存在。其实,它是带特定的逻辑属性的标准数字型数据类型。逻辑型数组通过所有的关系运算符和逻辑运算符创建。它们区别于数字型是在调用whos命令时,(logical)会出现在类型的后面。

逻辑数组有一个很重要的属性——它在算术运算中能提供一个屏蔽(mask)。屏蔽(mask)是指一个数组,他从另一个数组选择所需的元素参与运算。指定的运算只在选择的元素上执行而不执行任何操作在没有被选中的元素上(即这些元素保持不变)。

用逻辑数组运算的代码如下:

用逻辑数组运算的速度比未用的快的多。

所以我想问的问题,怎么在arrayfun函数中调用a的值呢???

我要回帖

更多关于 matlab矩阵循环赋值 的文章

 

随机推荐