我想改变的“循环”声明vectorizing代码,但是我一直坚持这个问题对于许多天,救命!

5视图(30天)
我听说一个矢量化版本代码比编写的代码更高效的“循环声明”在执行一些数学计算,但是我不是非常熟悉Matlab的矢量化代码编写风格,有善良的人愿意帮助改变下面的代码到一个矢量化风格的代码,或者提供一些建议给我,非常感谢!
这是mathmaetical表达我想计算,用sum1 sum2
这是Mycode
/ / c, h, g, e都是向量,下面是我的代码的定义。
c = 0 (q + 1, - 1);
e = 0 (q + 1, - 1);
h = 0 (q + 1, - 1);
g = 0 (q + 1, - 1);
....
/ /我想修改的部分向量化代码。
sum1 = 0;
sum2 = 0;
如果 (n > 1)
我= 1:n - 1
s = 0;
j = 0: n-1-i
s = s + c (n-i-j + 1) * (n-i-j) * h (j + 1) - c (n-i-j) * h (j + 2) * (j + 1);
结束
j = 0: n
s = h - h (n-i-j + 1) * (j + 1) *我;
结束
sum1 = sum1 + s * g (i + 1);
结束
j = 1: n - 1
sum2 = sum2 + g (1) * (c (n-j + 1) * (n-j) * h (j + 1) - c (n-j) * h (j + 2) * (j + 1));
结束
结束

答案(1)

Bhanu普拉卡什
Bhanu普拉卡什 2023年5月13日
嗨,谢尔顿,
根据我的理解,你想要的”进行向量化的“循环在给定的代码。
给定的“for”循环进行向量化代码,您可以使用“coder.loop。vectorize”功能。考虑下面的代码:
%创建10 x1矩阵随机值
x =兰德(10,1);
%创建10 0 x1矩阵存储输出
y = 0 (10, 1);
i = 1:长度(x)
% vectorizing“for”循环
coder.loop.vectorize
y (i) = sin (x(我));
结束
coder.loop函数”。vectorize”应用于循环计算输出“y”,导致矢量化的实现。
“coder.loop的更多信息。vectorize”功能,您可以参考以下文档:

类别

找到更多的在循环和条件语句帮助中心文件交换

s manbetx 845


释放

R2022a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!