1
下面我有一個簡單的例子,數據集:累積矩陣佔柱起始點
我想工作的每行的平均累計值。然而,cumsum給出了下面的輸出:
cumsum(a)
1 1 1 NaN NaN
2 2 2 NaN NaN
3 3 3 1 NaN
4 4 4 2 1
5 5 5 3 2
然後計算行平均,得出:
nanmean(a,2)
1
2
2.5
3
4
我希望能夠考慮到一個事實,即不同的列開始後,即該行平均值由於列(4:5)中的數字較少,所以行(3:5)相對於它們的真實值被降低。
我想通過將矩陣(a)中每列中第一個數字元素上面的最後一個NaN替換爲累積矩陣中該行其他列的平均值來實現此目的。這需要迭代完成以反映累積矩陣中的變化值。因此,新的矩陣將首先如下所示:
(a)
1 1 1 NaN NaN
1 1 1 *2* NaN
1 1 1 1 NaN
1 1 1 1 1
1 1 1 1 1
,這將導致:
cumsum(a)
1 1 1 NaN NaN
2 2 2 2 NaN
3 3 3 3 NaN
4 4 4 4 1
5 5 5 5 2
,然後反覆,(一)將等於:
(a)
1 1 1 NaN NaN
1 1 1 2 NaN
1 1 1 1 *3*
1 1 1 1 1
1 1 1 1 1
,這將導致:
cumsum(a)
1 1 1 NaN NaN
2 2 2 2 NaN
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5
哪會給出所需的行平均值爲:
nanmean(a,2)
1
2
3
4
5
謝謝您的回答,這似乎在上面的例子中工作。但是,我的實際數據要複雜得多。僅在稍微複雜的數據集上使用您的代碼,例如a = [1 1 1 NaN NaN; 2 2 2 NaN NaN; 3 3 3 1 NaN; 4 4 4 2 1; 5 5 5 3 2];導致錯誤的結果。 –
它不正確?你會期待什麼? – Wolfie
別擔心,我已經設法找到解決問題的解決方法。歡呼你的幫助。 –