Create signal block based on a threshold

3 次查看(过去 30 天)
Hi there,
I have a signal which is saved as a csv file. I'm trying to break up the signal into individual blocks of a fixed length (say 100 samples) for analysis (fft, wavelet, amplitude etc) when a threshold is crossed. If, the threshold was to be placed at 5, I still need the a bit before the threshold included in the block (say 30 of the 100 samples before the major peak, 70 after). How would i go about this, only getting 1 block output per signal pulse.
Many thanks in advance!
matlab question.png

回答(1 个)

Sammit Jain
Sammit Jain 2020-1-27
Hi Angus,
I'm assuming that the csv file has been imported into the MATLAB workspace. If you encountered issues while importing the csv, you may look at: https://www.mathworks.com/matlabcentral/answers/72545-how-to-import-csv-file-in-matlab
Let us say it had 600 samples, and it was broken down into 6 blocks of 100 samples each.
For the sake of this example, let us consider each block to be of length 10 samples.
Consider one such block B = [4 3 2 2 10 1 5 20 9 1].
B = [4 3 2 2 10 1 5 20 9 1];
idx = find(B > 5);
peak_idx = idx(1);
thresholded_sample = B(1:peak_idx-1);
In this case thresholded_sample will have [4 3 2 2]

类别

Help CenterFile Exchange 中查找有关 Signal Analysis 的更多信息

产品


版本

R2018b

Community Treasure Hunt

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

Start Hunting!

Translated by