Trying to figure out a algorithm to filter out some data, since I dont have any additional toolbox.
45 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Govind Sankar Madhavan Pillai Ramachandran Nair
le 9 Oct 2025 à 12:12
Commenté : Star Strider
le 10 Oct 2025 à 11:14
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.
0 commentaires
Réponse acceptée
Star Strider
le 9 Oct 2025 à 13:19
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 commentaires
Plus de réponses (2)
Alan Stevens
le 9 Oct 2025 à 13:06
Modifié(e) : Alan Stevens
le 9 Oct 2025 à 13:11
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');
1 commentaire
Voir également
Catégories
En savoir plus sur Blue dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



