Trying to figure out a algorithm to filter out some data, since I dont have any additional toolbox.

조회 수: 7 (최근 30일)
Hi,
I have uploaded a mat file which contains two vectors e and v. e is for energy and v is for voltage, but thats not important. And I plot them like this.
plot(v,e);
grid on;
grid minor;
xlim([3.485,3.6]);
set(gca, 'XDir','reverse');
and when you plot the values, you get this plot with those spikes. I am trying to figure out how to remove those spikes, but i cant see any patterns. I dont have any toolbox, so i have to use matlab and my brain to figure this out. But i am currently struggling to come up with an idea. If anyone can help me, kindly please help me. Thank you.

채택된 답변

Star Strider
Star Strider 2025년 10월 9일
The filloutliers function is a core MATLAB function (no toolboxes required) introduced in R2017a.
Using it on your data --
LD = load('eeandv.mat');
e = LD.e;
v = LD.v;
figure
plot(v,e);
grid on;
grid minor;
xlim([3.485,3.6]);
set(gca, 'XDir','reverse');
xlabel('v')
ylabel('e')
title('Original')
e = filloutliers(e, 'linear','movmedian',10);
figure
plot(v,e);
grid on;
grid minor;
xlim([3.485,3.6]);
set(gca, 'XDir','reverse');
xlabel('v')
ylabel('e')
title('Using ''filloutliers''')
.

추가 답변 (2개)

Torsten
Torsten 2025년 10월 9일
편집: Torsten 2025년 10월 9일
load("eeandv.mat")
tol = 0.005;
idx = abs(diff(e)) <= tol;
e = e(idx);
v = v(idx);
plot(v,e)
grid on;
grid minor;
xlim([3.485,3.6]);
set(gca, 'XDir','reverse');

Alan Stevens
Alan Stevens 2025년 10월 9일
편집: Alan Stevens 2025년 10월 9일
Here's one possibility, though it isn't a general solution, it just works for this data set
load('eeandv.mat')
xlo =3.485; xhi = 3.6;
ixlo = find(v==xlo); ixhi= find(v==xhi);
ylo = e(ixlo); yhi = e(ixhi);
x = [xlo, xhi];
y = @(x) ylo + (x-xlo)*(yhi-ylo)/(xhi-xlo);
e(e<y(v)) = NaN;
plot(v,e,'.');
grid on;
grid minor;
xlim([3.485,3.6]);
set(gca, 'XDir','reverse');

카테고리

Help CenterFile Exchange에서 Blue에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by