2016-01-12 41 views
1

在matlab中是否有一个函数将从最后一行开始的值和下一行的总结值进行求和?例如:在Matlab中从最后一行开始总结一列值

data=  1   result 21 
      2     20 
      3     18 
      4     15 
      5     11 
      6     6 
+6

我想你应该看'cumsum' http://uk.mathworks.com/help/matlab/ref/cumsum.html#btrgrnv-2_1其实cumsum(flipud(data))应该这样做。 – GameOfThrows

+0

@GameOfThrows你应该回答这个问题,因为它正是他想要的(尽管如此,不要忘记第二个'flipud',以恢复结果:'flipud(cumsum(flipud(data)))) – Adriaan

回答

2

GameOfThrows是在正确的轨道上,但你需要一个额外的flipud当你完成:

out = flipud(cumsum(flipud(data))); 

的第一款翻盖保证我们开始从最后一个元素,而不是总结首先。然后我们执行累积总额,但您也希望确保订单被反转,因此您必须再次致电flipud。然而,是绝对安全的,因为我们不知道,如果你的数据是一行或一列向量,我要确保你的数据是前做的列向量你问:

out = flipud(cumsum(flipud(data(:)))); 
+0

或者在'cumsum(___,direction)'中使用方向?虽然没有测试过。 – Divakar

+0

@Divakar试过了。第二个参数只指定了维度......我希望它也适用于方向。 – rayryeng

+1

是的,我刚刚阅读了有关GameOfThrows建议的命令,但添加了rayryeng建议的flipud只是做了这项工作。 Thanx – gabby113

相关问题