arrays - Matlab在没有循环的情况下创建新的值数组
问题描述
在 Matlab 中,除了一个例子,我不知道解释这一点的最佳方法。假设我有一个名为的数组tStart
和一个tDuration
长度:
tStart = [3,8,15,20,25];
tDuration = 2;
有没有办法得到一个新的数组,它会是:
[3,4,5,8,9,10,15,16,17,20,21,22,25,26,27]
所以我想要的是使用初始tStart
数组,然后用起始值组成一个新数组,然后为tDuration
.
如果我这样做[tStart(1:end)+tDuration]
了,我会得到一个结束值的数组,但是我怎样才能得到开始、结束和中间的所有值呢?
如果我[tStart(1:end):tStart(1:end)+tDuration]
得到一个错误。
任何没有循环的方法的帮助将不胜感激。
解决方案
我会使用 MATLAB 的隐式扩展、重塑和二维数组的排序。
首先,创建一个包含所需值的二维数组tStart
:
tStart = [3,8,15,20,25];
tDuration = 2;
tDurAdd = [0:tDuration].'; % numbers to add to tStart
tArray = tStart + tDurAdd;
这给了我们
tArray =
3 8 15 20 25
4 9 16 21 26
5 10 17 22 27
这些是正确的值,现在我们只需要将它们重塑为行向量:
tResult = reshape(tArray, 1, []);
最后的数组是:
tResult =
3 4 5 8 9 10 15 16 17 20 21 22 25 26 27
当然,这一切都可以在一行中完成:
tResult = reshape(tStart + [0:tDuration].', 1, []);
推荐阅读
- python - Nan值的布尔索引
- scala - Future 上的惰性验证是否会阻止实际的数据库调用?
- javascript - jQuery 验证 - 在 Safari 中不验证日期,但在 Chrome 中验证
- python - 我无法使用 cv2.imwrite () 方法进行图像处理
- python - 如何在 Python 中为线性回归预处理字符串数据
- c# - TempData 在我的 .NET Core 项目中不起作用
- python-3.x - 有条件地将 DataFrame 行中的值相乘
- javascript - 获取字典中存在多个值的字典列表的最大值
- validation - Telerik Kendo MVC 网格验证总是失败
- ajax - 从 express 响应到设置 cookie 后,Ajax 发布成功功能未执行