Nik_Su 0 17 августа, 2021 Опубликовано 17 августа, 2021 · Жалоба 1 час назад, quato_a сказал: какие-то магические константы Наверно нужно было начать объяснение с данных констант. %Данный скрипт выполняет фильтрацию используя эксподенцианальную срднюю %После чего переводит из формата +/-1 в формат 1/0 %Размер окна усреденения windowSize = 10; %Отфильтрованный сигнал after_exponential_awer = movavg(data,'exponential',windowSize); %after_exponential_awer = data; for i = 1:length(after_exponential_awer) if(after_exponential_awer(i)>=0) norm_(i) = after_exponential_awer(i);end if(after_exponential_awer(i)>=0.06) norm_(i) = 0.06;end if(after_exponential_awer(i)<0) norm_(i) = 0; end end figure(); subplot(2,1,1); plot(after_exponential_awer(1:Fs/50)) subplot(2,1,2); plot(norm_(1:Fs/50)) Используя фильтр экспоненциального среднего мы фильтруем сигнал от ВЧ шумов, после чего просто отсекаем нижнюю часть по нулю, а верхнюю отсекаем по значению 0.06. 1 час назад, quato_a сказал: совсем не понятен мат алгоритм, по которому происходило выделение нулей и единиц))) почему же только 95%? остальные случаи зашумлены? Алгоритм выделения действует так: Получает отсчет x(t) и сравнивает его с x(t-1). Если x(t) != x(t-1), тогда мы проверяем какое было предыдущее число 1 либо ноль. У нас есть два счетчика one_ и zero_, если последовательность состоит из 0.06 тогда в one_ прибавляется единица и когда в x(t) приходит 0, тогда мы one_ делим на количество записанных туда единица и проверяем полученное число Y>0.7 || Y>1.7 .... Y>15.7 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться