extractsigroi

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

Описание

пример

sigroi = extractsigroi(x,roilims) извлекает видимые области (ROIs) вектора входного сигнала 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