Filtering timeseries with NaN

7 次查看(过去 30 天)
I am filtering out data due to the degree of Standard deviation. Once I determine which rows of data are good, I good back to the orginal data set and try to NaN the rows which are 'bad'.
threshold = 0.0013;
filtRows = find(relSD1 < threshold);
% plot(time, relSD1, '.-');
figure(6)
%plot figure - note that you need to rename my 'time' for your own time vector name
plot(time, f_fluxxcorredit,'.-k');
hold on;
plot(time(filtRows), f_fluxxcorredit(filtRows),'.r');
legend('all data', 'filtered data');
xlabel('Time, hrs');
ylabel('Flux mmol m^{-2} day^{-1}');
shg
How would I get a vector like f_fluxxcorredit (201 points) but with the bad data NaN? Filtrow is showing the good points 112 of them and the others should be NaN of f_fluxxcorredit.

采纳的回答

jonas
jonas 2018-9-13
编辑:jonas 2018-9-13
It's easier to use logical indexing. If good data lies below a certain threshold, then bad data lies above that threshold. Switch the sign and use the condition for logical indexing.
This should work:
threshold = 0.0013;
f_fluxxcorredit(relSD1 > threshold)=NaN;

更多回答(1 个)

Peter Perkins
Peter Perkins 2018-9-13
You might take a look at isoutlier and filloutliers.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by