Pull to refresh
73
0
Юрий Тараненко @Scorobey

Разработчик учебных программ

Send message
Во втором листинге f- это (ВП) одномерного сигнала в виде обобщенного ряда или интеграла Фурье по системе базисных функций. На рисунке приведен модуль спектральной плотности вейвлета «Мексиканская шляпа» (см.http://window.edu.ru/resource/328/29328/files/nstu68.pdf — с.10, рис. 1.2 б)
В третьем листинге, если Вы это имели ввиду, проведено численное интегрирование для получения вейвлет — спектра w(a, b) синусоидальной функции (Вот зачем умножать MHAT на синус) с использованием вейвлетобразающей функции MHAT ( см.таблицу). Диапазон численного интегрирования выбран по числу отсчётов синусоидальной функции.
Спасибо! за вопрос.
Спасибо за комментарий.Согласен, что и подтверждает скалограмма. Указал в тесте публикации.
Да планирую продолжить и постараюсь учесть Вашу просьбу.
Лучше всего показать на примере в котором и Вы примите участие.Вот функция для быстрого (оконного фурье -STFT):
from scipy import*
from pylab import*
def stft(x, fs, framesz, hop):
framesamp = int(framesz*fs)
hopsamp = int(hop*fs)
w = hanning(framesamp)
X = array([fft(w*x[i:i+framesamp])
for i in range(0, len(x)-framesamp, hopsamp)])
return X
Вот пример её запуска для низкой частоты:
f0 = 440 #Вычислить STFT синусоиды 440 Гц
fs = 8000 # дискретизация на частоте 8 кГц
T = 5 # продолжительностью 5 секунд
framesz = 0.050 # с размером кадра 50 миллисекунд
hop = 0.025 # и размер прыжка 25 миллисекунд.
Вот интерфейс вывода в спектрограмму (не путать со скалограммой) с заданием спектра:
t = linspace(0, T, T*fs, endpoint=False)
x =sin(2*pi*f0*t)+sin(4*pi*f0*t)
X = stft(x, fs, framesz, hop)
imshow(absolute(X.T), origin='lower', aspect='auto',
interpolation='nearest')
xlabel('Time')
ylabel('Frequency')
show()
Теперь сгенерируйте два нестационарных сигнала — один с двумя одновременно действующими частотами другой с теми же частотами но следующими по времени.
Посмотрите на спектрограммы и всё поймёте — это лучший способ убедится во всём самому и заодно и вспомнить школьный курс. Да окно и перекрытие не меняется во время анализа а устанавливается для заданной частоты.
Спасибо за вопрос!!!
Оконное Фурье не адаптирует окно к частоте и работает либо на высоких частотах, либо на низких, а вейвлет работает на обеих частотах.
При использовании оконного преобразования Фурье невозможно одновременно обеспечить хорошее разрешение по времени и по частоте. Чем уже окно, тем выше разрешение по времени и ниже разрешение по частоте.Разрешение по осям является постоянным. Это нежелательно для ряда задач, в которых информация по частотам распределена неравномерно. В таких задачах в качестве альтернативы оконному преобразованию Фурье может использоваться вейвлет-преобразование, временное разрешение которого увеличивается с частотой.
Оконное Фурье преобразование не обладает свойствами масштабирования и задержки.
Из текста в начале статьи «При обработке данных на компьютере может выполняться дискретизированная версия непрерывного вейвлет-преобразования, основы которого описаны в моей предыдущей статье». Но ссылку уже добавил потому что «предыдущая статья» это не ссылка.Спасибо за замечание.
Формулы для материнских вейвлетов я приводил в статье Вейвлет-анализ основы. Повторяю для Вас:

Что касается «супер-нетривиального хака» поделитесь ссылкой ознакомлюсь. Спасибо за комментарий.
Допустим на масштабе а=1 сдвиг происходит на b=1. ( к примеру )
соответственно по ((t-b)/a) вейвлет помещается в точки на оси Х
((1-1)/1)=0
((2-1)/1)=1
((3-1)/1)=2…
Тогда на масштабе а=2 по формуле ((t-b)/a) получим сдвиг несколько меньше (ведь на 2 делим).
((1-1)/2)=0
((2-1)/2)=0.5
((3-1)/2)=1…
Т.е на том же временном интервале шагов анализа больше!
Я подготовлю детальный ответ на Ваш вопрос в следующей публикации «Вейвлет-анализ.Часть 1». Благодарю за вопрос!
Группировка нужна для идентификации закона распределения. Закон распределения определяет энтропийный коэффициент. Последний убирает неоднозначность в оценке погрешности. Идентификации формы распределения результатов измерений требует также ряд задач, эффективность решения которых отличается для различных распределений (например, использование метода наименьших квадратов или вычисление оценок энтропии). Задача идентификации весьма актуальна и часто решается при обработке экспериментальных данных. Спасибо за вопрос.
Статья мне понравилась, очевидно курсы по NLP не прошли для Вас даром. Попробуйте мою методику по определению авторства habr.com/ru/users/scorobey/posts/page4 есть и возможности определения скрытых латентно семантических связей. Удачи!!!
О терминологии- Оценка погрешности численного интегрирования. Различают два вида оценок априорные и апостериорные. Априорную оценку получают заранее, до проведения расчетов, на основе теоретического анализа квадратурной формулы. Апостериорную оценку определяют после вычислений на основе сопоставления результатов расчетов, проведенных при разных числах отрезков разбиения
Фильтр имеет свой алгоритм работы. То что Вы сделали отношения к ошибке не имеет а свидетельствует только о неизменности дисперсии шума !!!..
Проверяю!
from numpy import *
import matplotlib.pyplot as plt
from scipy.stats import norm
n_iter = 100 # Число итераций.
sz = (n_iter,) # Размер массива
x =2# Истинное значение измеряемой величины (фильтру неизвестно)
R1 = 0.1 # Ср. кв. ошибка измерения.
R = R1*R1 # Дисперсия
nr=«нормальным распределением»
y=norm.rvs( x, R1, size=sz)
Q = 1e-5 # Дисперсия случайной величины в модели системы
# Выделение памяти под массивы:
xest1 = zeros(sz) # Априорная оценка состояния
xest2 = zeros(sz) # Апостериорная оценка состояния
P1 = zeros(sz) # Априорная оценка ошибки
P2 = zeros(sz) # Апостериорная оценка ошибки
G = zeros(sz) # Коэффициент усиления фильтра
xest2[0] = 0.0
P2[0] = 1.0
for k in arange(1, n_iter,1): # Цикл по отсчётам времени.
xest1[k] = xest2[k-1] # Априорная оценка состояния.
P1[k] = P2[k-1] + Q# Априорная оценка ошибки.
# После получения нового значения измерения вычисляем апостериорные оценки:
G[k] = P1[k] / ( P1[k] + R )
xest2[k] = xest1[k] + G[k] * ( y[k] — xest1[k] )
P2[k] = (1 — G[k]) * P1[k]
plt.title('Ошибки при подавлении шумов \n с %s'%nr, size=12)
valid_iter = arange(1, n_iter,1) # P1 на 0 м шаге не определено
plt.plot(valid_iter, P1[valid_iter])
plt.xlabel('Номер итерации')
plt.ylabel('Априорная оценка ошибки')
plt.setp(plt.gca(), 'ylim', [0, .01] )
plt.show()
Уточняю: В этом случае среднее квадратическое отклонение результата измерения уменьшается в корень квадратный из n
Усреднение результатов многократных наблюдений при постоянстве значения измеряемой величины является наиболее эффективным методом уменьшения случайной погрешности измерения. При проведении многократных (n) наблюдений одного и того же значения физической величины во многих случаях в качестве результата измерения выбирается среднее значение результатов наблюдений. В этом случае среднее квадратическое отклонение результата измерения уменьшается в n раз.
«Вы не можете менять дисперсию случайной величины. Вы можете только оценить её величину (закон распределения).»
Да нужно говорить об оценке дисперсии для ограниченной выборки по которой мы её определяем, но это не как не влияет на факт уменьшения оценки дисперсии при использовании фильтра Калмана в режиме многократных измерений.
Фильтр Калмана в каждом цикле корректирует дисперсию, и, при многократных измерениях, дисперсия случайной величины уменьшается, а следовательно сужается интервал неопределённости и уменьшается энтропийная погрешность. Закон распределения случайной погрешности определяется по энтропийному коэффициенту и контрэксцессу и не зависит от физической природы случайной величины.

Information

Rating
Does not participate
Location
Днепр, Днепропетровская обл., Украина
Date of birth
Registered
Activity