从没有循环的描述性数据构建数组

3次浏览(过去30天)
我想从
Array1 = [10,3,3;1000,178,4];
Array2 = [10;13;16;1000;1178;1356;1534];
不使用
Idx2 = 1;
Array2 = 0 (sum(Array1(:,3)),1);
Idx1 = 1:size(Array1,1)
Array2 (Idx2: Idx2 + Array1 (Idx1, 3) 1) = (Array1 (Idx1, 1), Array1 (Idx1, 1) + (1: Array1 (Idx1, 3) 1]。* Array1 (Idx1, 2)];
Idx2 = Idx2+Array1(Idx1,3)-1;
结束
帮助吗?

接受的答案

沃尔特·罗伯森
沃尔特·罗伯森 2023年2月17日
Array1 = [10,3,3;1000,178,4];
Array2 = cell2mat (arrayfun (@ (Idx) Array1 (Idx 1) + (0: Array1 (Idx, 3) 1)。”* Array1 (Idx, 2),(1:尺寸(Array1, 1))。’,“统一”, 0))
Array2 = 7×1
10 13 16 1000 1178 1356 1534
2的评论
沃尔特·罗伯森
沃尔特·罗伯森 2023年2月17日
你要求的不是性能,而是不使用循环。为 大多数 操作(但不是全部,如果你知道正确的晦涩的形式),arrayfun和cellfun 比循环慢。
如果您正在寻找性能,那么您现有的代码可以利用cumsum()而不是每次都计算索引,并且您可以使用我使用的计算而不是使用[original,冒号表达式]列表构造函数。

登录评论。

更多答案(1)

凯文·霍利
凯文·霍利 2023年2月17日
Array1 = [10,3,3;1000,178,4];
Array2 = cumsum(Array1,2)
Array2 = 2×3
10 13 16 1000 1178 1182
2的评论

登录评论。

类别

了解更多矩阵和数组帮助中心而且文件交换

标签

2022世界杯八强谁会赢?


释放

R2019b

世界杯预选赛小组名单社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!世界杯预选赛小组名单

开始狩猎!

Baidu
map