0

我有一个有机体完成发育的天数,以及每天完成发育的相应有机体数量。生物体都在不同的日子开始发育,但是不同年龄的生物体可以在同一天完成发育。

完成

日 22

23

23

23

24

完成数量
124
12
345
7
231

我的问题是如何总结在同一天完成的所有生物。当只有两个连续的完成天数相同时,这不是问题:我只是将“numbers_completed(i) 添加到 numbers_completed(i-1)”。但是,如果三组生物在同一天完成(例如上面的第 23 天),则第二天和第三天的总和会覆盖前两天的总和。有人对如何做到这一点有任何建议吗?

4

2 回答 2

0

假设您要添加对应于第 23 天的“已完成数字”(即第 2、第 3 和第 4 个条目),您可以使用该find函数来索引它们在“完成日”向量中出现的位置,然后告诉 MATLAB添加“完成的数字”向量的那些条目。

我将其实现为:
completion_day = [ 22 23 23 23 24]; % defining your variables
numbers_completed = [ 124 12 345 7 231]; % defining your variables
idx = find(completion_day == 23); % find the location of completion day 23
sum(numbers_completed(idx)) % return the sum of those 3 numbers

于 2013-05-01T20:08:30.693 回答
0

find只要您的向量大小相同,您就可以跳过并只使用逻辑索引。这是更短的代码,而且可能更快。

completionDay = [22 23 23 23 24];
numbersCompleted = [124 12 345 7 231];
sumCompleted = sum(numbersCompleted(completionDay == 23));

您可以使用以下方法遍历唯一的完成天数,并获取每天创建的总数
uniqueDays = unique(completionDays);
for i=1:length(uniqueDays)
sumCompleted(i) = sum(numbersCompleted(completionDay == uniqueDays(i)));
end

于 2013-05-01T20:34:23.313 回答