整流化されたデータか​ら任意の閾値以下かつ​100以上連続するデ​ータの抽出方法を知り​たいです

4 views (last 30 days)
和希 吉川
和希 吉川 on 2 May 2022
Answered: Hernia Baby on 2 May 2022
イメージはこの図におけるT1です。このT1はThreshold以下で連続する100個以上のデータです。特に”連続する100個以上のデータ”の部分について詳しく知りたいです。

Answers (1)

Hernia Baby
Hernia Baby on 2 May 2022
まずはサンプルを作ります
t = 0:1/1e3:8;
x = sin(t+5).^3+cos(2*pi*(t+5))+3;
threshold = 3.95;
n = 200;
一度図示していきましょう
figure
hold on
plot(t,x,'Color',[.4 .4 .4])
yline(threshold,'--r')
hold off
今回は、上図の閾値以上でn=200より連続点が大きい部分を抜き出します
こちら を参考にして正負ともにカウントしていきます
そのあと差分をとり、カウントがリセットされるまでの場所を探します
idx = x >= threshold;
cells = cell2mat(arrayfun(@(t)1:t,diff(find([1 diff(idx) 1])),'un',0)).*idx;
idx1 = find([diff(cells) 0] < 0)
idx1 = 1×4
1044 2170 3228 4069
ここで n = 200点より多い配列を抽出します
idx1 = idx1(cells(idx1) > n);
num = cells(idx1)
num = 1×2
281 483
for ii = 1:length(idx1)
start = idx1(ii)-num(ii)+1;
fin = idx1(ii);
T{ii} = t(start:fin);
X{ii} = x(start:fin);
end
さて後はXを見ればいいのですがせっかくなので、図示してみましょう
figure
hold on
plot(t,x,'Color',[.4 .4 .4])
yline(threshold,'--r')
cellfun(@(t,x) plot(t,x), T,X)
hold off

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!