我正在嘗試計算矩陣多列上的移動平均值。在閱讀了一些關於stackoverflow的答案之後,即this之一,似乎filter
函數是要走的路。但是,它不會忽略NaN
元素,我想這樣做會忽略NaN
元素的本質,函數nanmean
。以下示例代碼:忽略NaN的移動平均值
X = rand(100,100); %generate sample matrix
X(sort(randi([1 100],1,10)),sort(randi([1 100],1,10))) = NaN; %put some random NaNs
windowlenght = 7;
MeanMA = filter(ones(1, windowlenght)/windowlenght, 1, X);
爲了清楚起見,你想保留NaNs在他們各自的位置,只是爲了各種意思的目的而忽略它們,而不是完全移除它們並採取結果的滾動平均值? –
這是正確的。因此,如果連續有7個NaN,則得到的平均值應該是NaN。如果存在序列[NaN NaN NaN NaN NaN 5 10],則所得平均值應爲7.5。 – phdstudent
我認爲你不能使用過濾器,並可能需要循環思考這一點。由於FFT的特性,您可以使用濾波器,但是沒有NaN的數學公式。 –