Find duration of signal
4 ビュー (過去 30 日間)
古いコメントを表示
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 件のコメント
Star Strider
2020 年 9 月 9 日
There are no actual ‘missing’ values, just a very low amplitude signal after about element 40:
T1 = readtable('sampledata.csv');
figure
semilogy(abs(T1{:,1}))
grid
producing:
That would appear to be legitimate data.
.
Xavier
2020 年 9 月 10 日
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
採用された回答
Xavier
2020 年 9 月 10 日
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)
その他の回答 (1 件)
Steven Lord
2020 年 9 月 9 日
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)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!