matlab - 优化涉及 for 循环的 matlab 代码
问题描述
我有一个像这样的 Matlab 代码
s=[0.5 0.6 0.7];
u=[0.3618 0.9826 0.7237 0.0346 0.5525 0.0692 0.8949 0.1384
0.3418 0.9226 0.7213 0.0346 0.7525 0.0692 0.8949 0.1384
0.3318 0.9326 0.7237 0.0336 0.5575 0.0792 0.8949 0.1385]
A= u(1:2:7); % Here u is a 1-D vector and hence A
B=u(2:2:8); % Here u is a 1-D vector and hence B
C=mod(s(1)-(A+B),1);
我想为其他两个值实现此代码,s
也使用下一个8
值,u
即现在我的代码变为
A=u(9:2:15);
B=u(10:2:16);
C=mod(s(2)-(A+B),1);
同样对于 s 的最后一个值。但每次我需要下一个8
值u
。我如何编码以减少时间。
解决方案
因此,您从一个 24 元素数组开始u
,您希望以矢量化方式执行此操作。我假设您还有更多元素,但它们都适合内存。做到这一点的方法是u
将元素重塑到您想要的位置。您可以通过以下方式执行此操作:
u1 = reshape(u1,[2,4,3]);
从那里你还需要修改s
以匹配它
s1 = permute(s,[1 3 2]);
最后,您可以C
以矢量化形式计算矩阵
C1 = mod(s1-sum(u1),1);
对于这个问题,这给出了一个1x4x3
矩阵,其中第 3 维代表每组 8 个。然后您可以从那里提取您想要的问题集
C = squeeze(C1(1,:,1));
推荐阅读
- python - 屏幕截图 python 3.6.6 opencv 和枕头不工作
- python - 在 Mac OS 上设置 tkinter 图标
- bots - 用于为 Disord 编写机器人的最佳语言是什么?
- git - 检查使用了正确版本的 python 的 git hook 会是什么样子?
- php - 今天和unix时间戳之间的天数差异..
- facebook - 使用 Facebook Audience Network SDK 在应用中投放广告
- java - Java:如何更改使用 Spring Boot yml 配置的 mongodb 端口
- javascript - DynamoDB 中的 ScanFilter 使用 BETWEEN comparisonOperator
- c++ - 如何打印二维字符数组 C++
- c# - C#从数据库中加载对象