exponenta event banner

extractsigroi

Извлечь представляющие интерес сигнальные области

Описание

пример

sigroi = extractsigroi(x,roilims) извлекает представляющие интерес области (ROI) вектора входного сигнала x на основе пределов окупаемости инвестиций, указанных в roilims.

пример

sigroi = extractsigroi(x,roilims,concat) с concat указано как true извлекает области, представляющие интерес, и сцепляет их.

Примеры

свернуть все

Рассмотрим матрицу из двух столбцов, представляющую возможные области интересов случайного сигнала с 45 выборками. Извлекают выборки сигнала, соответствующие областям, представляющим интерес.

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

Рассмотрим набор данных о температуре, собранных термометром в офисном здании в течение четырех месяцев. Устройство считывает каждые полчаса. Таким образом, частота выборки составляет 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 )')

Figure contains an axes. The axes contains an object of type line.

Создайте пределы области интересов, разделяющие температурные данные на 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 выборками. Извлекают выборки сигнала, соответствующие областям, представляющим интерес. Соедините образцы в один вектор.

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

Figure contains an axes. The axes contains 2 objects of type line.

Рассмотрим набор данных о температуре, собранных термометром внутри офисного здания в течение четырех месяцев. Устройство считывает каждые полчаса. Таким образом, частота выборки составляет 48 измерений в день. Преобразуйте температуру в градусы Цельсия.

load officetemp

tempC = (temp-32)*5/9;

fs = 48;

Создайте пределы области интересов (ROI), которые соответствуют пяти случайным двухнедельным периодам, разделенным по крайней мере 24 часами. Используйте показания температуры этих дней для аудита.

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

Извлеките области, представляющие интерес, снова, но теперь объедините образцы в один вектор. Вычислите среднюю температуру в проверенных областях.

sigroic = extractsigroi(tempC,roilims,true);

avgTFc = mean(sigroic)
avgTFc = 22.7078

Преобразуйте пределы окупаемости инвестиций в двоичную последовательность и создайте маску. Время экспрессов в неделях.

m = sigroi2binmask(roilims,length(tempC));

msk = signalMask(m,'SampleRate',fs*7,'Categories',"Audit");

Постройте график данных и визуализируйте интересующие области прямоугольными фрагментами.

plotsigroi(msk,tempC,true)
xlabel('Time (weeks)')
ylabel('Temperature ( {}^\circC )')

Figure contains an axes. The axes contains 6 objects of type line, patch.

Входные аргументы

свернуть все

Входной сигнал, заданный как вектор.

Пример: chirp(0:1/1e3:1,25,1,50) определяет чирп, дискретизированный на частоте 1 кГц.

Типы данных: single | double
Поддержка комплексного номера: Да

Пределы области интересов, определяемые как матрица положительных целых чисел из двух столбцов. I-й ряд roilims содержит индексы отсутствия возрастания, соответствующие начальной и конечной выборкам i-ой интересующей области сигнала.

Пример: [5 8; 12 20; 18 25] задает матрицу из двух столбцов «область интересов» с тремя областями.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Опция для конкатенации выделенных сигнальных областей, заданная как логическое значение.

Типы данных: logical

Выходные аргументы

свернуть все

Области сигнала, представляющие интерес, возвращаемые в виде массива ячеек или вектора.

  • Если concat имеет значение false, sigroi является массивом ячеек. i-я ячейка sigroi содержит выборки сигнала, соответствующие i-ой интересующей области, указанной в roilims.

  • Если concat имеет значение true, sigroi является вектором, объединяющим все извлеченные выборки сигнала.

Расширенные возможности

.

См. также

Объекты

Функции

Представлен в R2020b