Trying to figure out a algorithm to filter out some data, since I dont have any additional toolbox.
45 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Govind Sankar Madhavan Pillai Ramachandran Nair
il 9 Ott 2025 alle 12:12
Commentato: Star Strider
il 10 Ott 2025 alle 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 Commenti
Risposta accettata
Star Strider
il 9 Ott 2025 alle 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 Commenti
Più risposte (2)
Alan Stevens
il 9 Ott 2025 alle 13:06
Modificato: Alan Stevens
il 9 Ott 2025 alle 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 Commento
Vedere anche
Categorie
Scopri di più su Blue in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!



