2016-01-12 83 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

相關問題