このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
extractsigroi
説明
例
信号の関心領域の抽出
45 サンプルのランダムな信号が取り得る関心領域を表す 2 列の行列について考えてみます。関心領域に対応する信号サンプルを抽出します。
x = randn(45,1); roilims = [5 10; 15 25; 30 35]; sigroi = extractsigroi(x,roilims);
信号をプロットし、関心領域を強調表示します。
plot(x) hold on for kj = 1:length(sigroi) plot(roilims(kj,1):roilims(kj,2),sigroi{kj}) end hold off
データ セットからの関心領域の抽出
オフィス ビル内の温度計が約 4 か月間収集した一連の温度データについて考えてみます。温度計は 30 分ごとに読み取りを行っています。したがって、サンプル レートは 48 測定/日になります。温度を摂氏に変換し、データをプロットします。
load officetemp tempC = (temp-32)*5/9; fs = 48; t = (0:length(tempC) - 1)/fs; plot(t,tempC) xlabel('Time (days)') ylabel('Temperature ( {}^\circC )')
温度データを 29 日間に分割する関心領域の範囲を作成します。
roilims = [1 29; 30 58; 59 87; 88 116];
関心領域を抽出します。各期間の平均温度を計算し、値を表示します。
sigroi = extractsigroi(tempC,roilims*fs); cellfun(@mean,sigroi)'
ans = 1×4
22.8819 22.3073 22.7633 23.0066
信号の関心領域の抽出と連結
45 サンプルのランダムな信号が取り得る関心領域を表す 2 列の行列について考えてみます。関心領域に対応する信号サンプルを抽出します。サンプルを単一のベクトルに連結します。
x = randn(45,1); roilims = [5 10; 15 25; 30 35]; sigroi = extractsigroi(x,roilims,true);
信号をプロットし、関心領域を強調表示します。
plot(x) y = NaN(size(x)); for kj = 1:size(roilims,1) roi = roilims(kj,1):roilims(kj,2); y(roi) = sigroi(1:length(roi)); sigroi(1:length(roi)) = []; end hold on plot(y) hold off
データ セットからの関心領域の抽出と連結
オフィス ビル内の温度計が 4 か月間収集した一連の温度データについて考えてみます。温度計は 30 分ごとに読み取りを行っています。したがって、サンプル レートは 48 測定/日になります。温度を摂氏に変換します。
load officetemp
tempC = (temp-32)*5/9;
fs = 48;
少なくとも 24 時間の開きがある 5 つのランダムな 2 週間の期間に対応する関心領域 (ROI) の範囲を作成します。それらの日の温度測定値を監査用に使用します。
r = 5; w = 14*fs; s = 1*fs; hq = histcounts(randi(r+1,1,length(tempC)-r*w-(r-1)*s),(1:r+2)-1/2); t = (1 + (0:r-1)*(w+s) + cumsum(hq(1:r)))'; roilims = [t t+w-1];
関心領域を抽出します。観測された各関心領域の平均温度を計算し、値を表示します。
sigroi = extractsigroi(tempC,roilims); cellfun(@mean,sigroi)'
ans = 1×5
22.8075 22.2586 22.4256 22.9018 23.1457
関心領域を再度抽出しますが、今回はサンプルを 1 つのベクトルに連結します。観測された領域全体での平均温度を計算します。
sigroic = extractsigroi(tempC,roilims,true); avgTFc = mean(sigroic)
avgTFc = 22.7078
ROI 範囲をバイナリ シーケンスに変換し、マスクを作成します。時間を週で表します。
m = sigroi2binmask(roilims,length(tempC)); msk = signalMask(m,'SampleRate',fs*7,'Categories',"Audit");
データをプロットし、四角形のパッチで関心領域を可視化します。
plotsigroi(msk,tempC,true) xlabel('Time (weeks)') ylabel('Temperature ( {}^\circC )')
入力引数
x
— 入力信号
ベクトル
入力信号。ベクトルで指定します。
例: chirp(0:1/1e3:1,25,1,50)
は、1 kHz でサンプリングされたチャープを指定します。
データ型: single
| double
複素数のサポート: あり
roilims
— 関心領域の範囲
2 列の正の整数の行列
関心領域の範囲。2 列の正の整数の行列として指定します。roilims
の i 番目の行には、信号の i 番目の関心領域の開始サンプルと終了サンプルに対応する非減少インデックスが格納されます。
例: [5 8; 12 20; 18 25]
は、3 つの領域をもつ 2 列の関心領域行列を指定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
concat
— 抽出した信号領域を連結するオプション
false
(既定値) | true
抽出した信号領域を連結するオプション。logical 値として指定します。
データ型: logical
出力引数
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意および制限:
指定する場合、concat
は定数でなければなりません。
バージョン履歴
R2020b で導入
参考
オブジェクト
関数
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)