How to Interpolated data outliers
3 次查看(过去 30 天)
显示 更早的评论
I have a data column that has 3630 rows of data. I used the method: [A, B] = rmoutliers (C, 'movmedian', window); to remove the data outliers.
These data were removed and I need them to be interpolated by the average of the entire column of data. How can I do this?
0 个评论
采纳的回答
Turlough Hughes
2020-3-2
编辑:Turlough Hughes
2020-3-2
Generate some sample data:
C = (1:3630).';
idxout = randperm(3630,500); % random index for outliers
C(idxout) = C(idxout)+2000*(1-2*rand(numel(idxout),1));
Using rmoutliers some of the values are removed:
window = 50;
[A, B] = rmoutliers(C, 'movmedian', window);
Seeing as you've indicated that you only have a column vector of data I assume you want to interpolate using index position as your input for x, you could try the following:
idx = find(~B); % C(idx) is the same as A
D = interp1(idx,A,1:size(C,1)); % Interpolated using index position as x values.
Let me know.
1 个评论
更多回答(1 个)
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!