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 )')
入力引数
入力信号。ベクトルで指定します。
例: chirp(0:1/1e3:1,25,1,50)
は、1 kHz でサンプリングされたチャープを指定します。
データ型: single
| double
複素数のサポート: あり
関心領域の範囲。2 列の正の整数の行列として指定します。roilims
の i 番目の行には、信号の i 番目の関心領域の開始サンプルと終了サンプルに対応する非減少インデックスが格納されます。
例: [5 8; 12 20; 18 25]
は、3 つの領域をもつ 2 列の関心領域行列を指定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
抽出した信号領域を連結するオプション。logical 値として指定します。
データ型: logical
出力引数
拡張機能
使用上の注意および制限:
指定する場合、concat
は定数でなければなりません。
バージョン履歴
R2020b で導入
参考
オブジェクト
関数
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)