I would like to calculate the time duration of a signal. In the example below, I want to write in a 2 column matrix the signal and the duration for the purposes for plotting a histogram.
signal=[0 0 0 1 1 1 1 0 1 1];
Output I'd like to see:
signal duration(ns)
0 3
1 4
0 1
1 2
This is my code so far, I'm stuck at trying to calculate the actual duration. I dont know how to calculate time in between when 0 transitions to 1 and vice versa.
duration=[];
signal=[0 0 0 1 1 1 1 0 1 1];
for c=1:length(signal)
diff=signal(c+1)-signal(c);
if diff~=0
????
end
end

1 件のコメント

dpb
dpb 2019 年 7 月 14 日
Look for FileExchange (FEX) submittal "runs"...

サインインしてコメントする。

 採用された回答

infinity
infinity 2019 年 7 月 14 日

1 投票

Hello,
You also could refer this code to get the output
clear
signal=[0 0 0 1 1 1 1 0 1 1];
n = length(signal);
a = diff(signal);
b = find(a);
output = [signal(b) signal(end); diff([0 b n])]'

1 件のコメント

Tom richards
Tom richards 2019 年 7 月 14 日
編集済み: Tom richards 2019 年 7 月 18 日
Hi,
Your code definitely worked on a large data file as well.
Thanks very much!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeTime Series Events についてさらに検索

製品

リリース

R2019a

質問済み:

2019 年 7 月 14 日

編集済み:

2019 年 7 月 18 日

Community Treasure Hunt

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

Start Hunting!

Translated by