matlab for循环 改写成 矩阵算法

 我来答
创作者tEqb6m9nAF
2020-04-29 · TA获得超过3.7万个赞
知道大有可为答主
回答量:1.5万
采纳率:31%
帮助的人:831万
展开全部
有点麻烦。。我举个简单例子吧
把X*M*Y展开成一个多项式,比如2+r^2+r.*l+l.^2;
然后代码如下:
[m,
n]
=
size(R);Rc
=
R(:);
Lc
=
L(:);Resultc
=
2+Rc.^2+Rc.*Lc+Lc.^2;Result
=
reshape(Resultc,
[m
n]);但是,实际上的式子远比2+r^2+r.*l+l.^2这样复杂,所以这一行会写很长。。。
创作者t14Cd45Prh
2019-05-03 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.2万
采纳率:28%
帮助的人:2309万
展开全部
你所说的可能是指matlab的向量化运算(vectorization)吧?
matlab顾名思义,本来就是为向量或矩阵运算设计的,所以很多场合,如果能够使用向量化运算,就应尽量避免使用显式循环(for和while)。这一点是和普通的高级编程语言如c++、fortran有显著差别的。
举一个简单的例子:生成一个对数表,如果使用循环
x
=
.01;
for
k
=
1:1001
y(k)
=
log10(x);
x
=
x
+
.01;
end
而在matlab中可以用这种向量化的代码:
x
=
.01:.01:10;
y
=
log10(x);
二者的差别不仅在于代码量的大小,效率差别也很大。
这方面也没什么特殊的资料,属于比较基础的,如果想用好matlab,就请多花点时间把基本功练扎实点(事实上很多人并没做到)。特别提醒一下,很多时候注意使用matlab的“点运算操作符”,如.*,
./,
.^等。想进一步了解这方面的内容,可以在matlab帮助系统里搜索一下vectorization,有一些相关的主题和例子。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式