Hi everyone, please ask a question. How to remove bad values and filter the experimental data.The data is shown below.

2 views (last 30 days)
  4 Comments
Chris
Chris on 9 Nov 2021
Edited: Chris on 9 Nov 2021
Okay, there is actually a bad value in this vector. You can find it with
badValues = ~isfinite(x);
Then you could choose whether to delete it, or replace it with a 0 or an averaged value based on neighboring values.
After that, you should be able to apply a low-pass filter to quiet the high-frequency noise if you have the Signal Processing Toolbox, or smoothdata, or something along those lines.

Sign in to comment.

Accepted Answer

Image Analyst
Image Analyst on 9 Nov 2021
Try movmean():
s = load('24v.mat')
u = s.u;
x = 1 : length(u);
% Interpolate nans
nanLocations = isnan(u);
u = interp1(x(~nanLocations), u(~nanLocations), x)
% Now u has been "repaired" by filling in nans.
% Plot repaired data.
plot(x, u, 'b-')
grid on;
% Smooth with movmean() function.
smoothu = movmean(u, 201);
% Plot smoothed data.
hold on;
plot(smoothu, 'r-', 'LineWidth', 4)
xlabel('Index', 'FontSize',17);
ylabel('Signal', 'FontSize',17);
legend('Original Signal', 'Smoothed Signal')

More Answers (0)

Categories

Find more on Descriptive Statistics in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!