extractsigroi

Извлеките необходимые области сигнала

Описание

пример

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

пример

sigroi = extractsigroi(x,roilims,concat) с concat заданный как true необходимые области извлечений и конкатенируют их.

Примеры

свернуть все

Считайте матрицу 2D столбца представлением возможных необходимых областей случайного сигнала с 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

Считайте матрицу 2D столбца представлением возможных необходимых областей случайного сигнала с 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), которые соответствуют пяти случайным 2D недельным периодам, разделенным по крайней мере на 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

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

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
Поддержка комплексного числа: Да

Необходимая область ограничивает в виде матрицы 2D столбца положительных целых чисел. i th строка roilims содержит неуменьшающиеся индексы, соответствующие началу и выборкам конца i th необходимая область сигнала.

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

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

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

Типы данных: логический

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

свернуть все

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

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

  • Если concat установлен в true, sigroi вектор, который конкатенирует все извлеченные выборки сигнала.

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

Смотрите также

Объекты

Функции

Введенный в R2020b