加快一个for循环在我的项目?

2视图(30天)
阿尔贝托Paniate
阿尔贝托Paniate 2021年7月29日
回答: 艾克Blechschmidt 2021年7月30日
你好,我计划的一部分包含这段代码:
size2 = 2500;
格兰= 3;
= 1 (size2 size2);
k = 1:格兰(size2-gran):
j = 1:格兰(size2-gran):
X =兰特* 2 *介子;
h = 1:格兰
l = 1:格兰
(k + l - 1 h - j +) = A (k + l - 1 h - j +) * exp(我* X + 1);%阶段在广场格兰x格兰
结束
结束
结束
结束
我的电脑运行这段代码在0.60秒,但我想知道是否有可能加速这一过程。
我已经看到类似这样的问题:
但是我不知道我是否可以申请我的问题
2的评论
阿尔贝托Paniate
阿尔贝托Paniate 2021年7月29日
我不知道,我要创建一个随机数字矩阵X每平方的格兰X格兰。在这些方块随机数字是相等的

登录置评。

答案(1)

艾克Blechschmidt
艾克Blechschmidt 2021年7月30日
如果我理解你这能奏效快,约有2.5倍在我的机器上。
抽搐();
X =兰德(size2 * size2, 1) * 2 *介子;
(行,坳)= ind2sub ([size2 size2], 1: size2 * size2);
blockRow =装天花板(行/大);
blockCol =装天花板(col /格兰);
idx = sub2ind ([size2 /格兰,size2 /格兰],blockRow, blockCol);
= 1 (size2 size2);
(1:size2 * size2) = exp(我* X (idx) + 1);
toc ();
重要的不在于size2需要格兰的倍数这个解决方案工作。

社区寻宝

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

开始狩猎!