在Matlab里如何将简单的循环和分支语句变成纯向量运算
时间:2011-09-10
来源:互联网
             原文:http://www.jiang925.com/content/convert-simple-iteration-and-branch-vector-operations-matlab-0 <---帮忙点广告啊,哈哈
此乃原创,转载注明出处。^
前几天帮学精算的朋友改代码。学精算不深究编程,但还离不开Matlab的数学计算。话说我看到向量计算眼前一亮,联想到之前研究的GPU编程,向量运算要是能分发到CUDA进行运算岂不是太高效了。有点儿跑题了。我是想说,向量运算可以充分利用多线程来加速运算。所以能用向量运算的东西一定不要用循环。不排除循环多线程的可能,不过我估计Matlab没有那么高级能自动优化循环。最多我估计也就做到loop unrolling。
简单的向量运算,懂点儿Matlab的应该都会。
比如说要把一个1xN的向量每一项都乘2。循环写成下面的形式:
for j = 1:N
v(j) = v(j) * 2;
end
而使用向量运算就看起来简洁多了,也肯定更高效:
v(:) = v(:) * 2;
其中的":"代替了下标,代表所有的项都进行这一行操作。
上面是简单的循环。再复杂一点,比如说循环嵌套分支怎么办呢?方法还是有的。主要利用matlab里面将true解释成1,把false解释成0的特性。
比如说下面这段代码:
for j = 1:N
if A<B
v(j) = C;
else
v(j) = D;
end
end
单纯地用向量运算修改不好使了。需要绕一点儿弯儿了:
v(:) = (A<B) * C + (1 - (A<B)) * D;
或者
v(:) = (A<B) * C + (A>=B) * D;
肯定还有更复杂的语句可以转换。等碰上了再回来加上。
            此乃原创,转载注明出处。^
前几天帮学精算的朋友改代码。学精算不深究编程,但还离不开Matlab的数学计算。话说我看到向量计算眼前一亮,联想到之前研究的GPU编程,向量运算要是能分发到CUDA进行运算岂不是太高效了。有点儿跑题了。我是想说,向量运算可以充分利用多线程来加速运算。所以能用向量运算的东西一定不要用循环。不排除循环多线程的可能,不过我估计Matlab没有那么高级能自动优化循环。最多我估计也就做到loop unrolling。
简单的向量运算,懂点儿Matlab的应该都会。
比如说要把一个1xN的向量每一项都乘2。循环写成下面的形式:
for j = 1:N
v(j) = v(j) * 2;
end
而使用向量运算就看起来简洁多了,也肯定更高效:
v(:) = v(:) * 2;
其中的":"代替了下标,代表所有的项都进行这一行操作。
上面是简单的循环。再复杂一点,比如说循环嵌套分支怎么办呢?方法还是有的。主要利用matlab里面将true解释成1,把false解释成0的特性。
比如说下面这段代码:
for j = 1:N
if A<B
v(j) = C;
else
v(j) = D;
end
end
单纯地用向量运算修改不好使了。需要绕一点儿弯儿了:
v(:) = (A<B) * C + (1 - (A<B)) * D;
或者
v(:) = (A<B) * C + (A>=B) * D;
肯定还有更复杂的语句可以转换。等碰上了再回来加上。
作者: jiang925 发布时间: 2011-09-10
             回复 jiang925
有前提条件的..就是循环里前后要没有联系才行。
            有前提条件的..就是循环里前后要没有联系才行。
作者: zzjzzpgg12 发布时间: 2011-09-18
 相关阅读 更多  
      
    热门阅读
-   office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具 office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具阅读:74 
-   如何安装mysql8.0 如何安装mysql8.0阅读:31 
-   Word快速设置标题样式步骤详解 Word快速设置标题样式步骤详解阅读:28 
-   20+道必知必会的Vue面试题(附答案解析) 20+道必知必会的Vue面试题(附答案解析)阅读:37 
-   HTML如何制作表单 HTML如何制作表单阅读:22 
-   百词斩可以改天数吗?当然可以,4个步骤轻松修改天数! 百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!阅读:31 
-   ET文件格式和XLS格式文件之间如何转化? ET文件格式和XLS格式文件之间如何转化?阅读:24 
-   react和vue的区别及优缺点是什么 react和vue的区别及优缺点是什么阅读:121 
-   支付宝人脸识别如何关闭? 支付宝人脸识别如何关闭?阅读:21 
-   腾讯微云怎么修改照片或视频备份路径? 腾讯微云怎么修改照片或视频备份路径?阅读:28 















