Find duration of signal
12 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Marc Elmeua
am 9 Sep. 2020
Kommentiert: Xavier
am 10 Sep. 2020
I have a set of signals that due to some unknown error have been acquired with millions of empty datapoints. Is there a way I can automatically detect the moment the signal ends so I can delete everything from that point onwards?
Thanks everyone.

4 Kommentare
Xavier
am 10 Sep. 2020
This depends on how you define legitimate data, if you unplug a probe/sensor from an oscilloscope it will continue to display numbers and a waveform. If you're trying to measure a signal then it is fair to call recorded noise invalid data
Akzeptierte Antwort
Xavier
am 10 Sep. 2020
Something like this may work for you
Raw data:

data = readmatrix('sampledata.csv');
avgdat = movmean(abs(data), 5);
threshold = 0.01;
data(avgdat < threshold) = [];
plot(data)

2 Kommentare
Weitere Antworten (1)
Steven Lord
am 9 Sep. 2020
If the empty data points are represented by NaN then find the 'last' 1 element of the vector that isfinite.
x = [1:10 NaN(1, 5)]
find(isfinite(x), 1, 'last')
If the vector has no missing data inside it, you could instead just rmmissing.
rmmissing(x)
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!