Форум программистов, компьютерный форум, киберфорум
Python: Научные вычисления
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/21: Рейтинг темы: голосов - 21, средняя оценка - 4.81
9 / 5 / 4
Регистрация: 11.12.2016
Сообщений: 166

Вейвлеты

09.02.2021, 17:29. Показов 4430. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет, прошу помощи, так как не получается сделать вейвлетное преобразование

Имеется синус 3-х герц c частотой дискретизации 1000Гц, загруженный в программу и обработанный посредством PyWavelets - pywt.cwt
Мне необходимо взять ширину от 1 до 10 Гц, с дельтой 0.1
Но как мне кажется, результат не корректный

Код:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
datafile = np.loadtxt("sin_3Hz_data.txt", float)
arrayofdatafile = np.array(datafile)
arrayofdatafile = arrayofdatafile.transpose()
times = arrayofdatafile[0, :]
datas = arrayofdatafile[1, :]
dt = 1 / 1000
scales = np.arange(1, 10, 0.1)
f = pywt.scale2frequency("gaus1", scales) / dt
[coefficients, frequencies] = pywt.cwt(datas, f, 'cmor1.0-0.4', dt)
 
power = (abs(coefficients)) ** 2
period = 1. / frequencies
 
fig, ax = subplots(figsize=(15, 10))
im = ax.contourf(times, scales, log2(power), extend='both',cmap="inferno")
 
show()
На картинке, насколько я понимаю, должен присутствовать максимум на частоте 3-х герц, но его там нет
Возможно кто-то может помочь

Добавлено через 6 минут
P.S Продолжительность синуса - 20 секунд, или 20к отсчетов
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.02.2021, 17:29
Ответы с готовыми решениями:

Вейвлеты
Уже совсем с ними запутался. Для аналитических функций вроде понятно.. А от как бить с дискретным набором данных, когда функция...

Вейвлеты
Вопрос, наверное, глупый, но с вейвлетами до этого не сталкивалась. Возникла необходимость в их применении к изображениям, но времени...

Вейвлеты в Mathcad
Ребята,помогите, пожалуйста! У меня есть гармоническая функция и вейвлет "мексиканская шляпа". График этих функция отдельно...

12
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,760
09.02.2021, 19:29
выложите sin_3Hz_data.txt
0
9 / 5 / 4
Регистрация: 11.12.2016
Сообщений: 166
09.02.2021, 20:33  [ТС]
u235, в архиве текстовый файл, содержащий два столбца - слева отсчет времени, а справа значение
Вложения
Тип файла: zip sin_3Hz_data.txt.zip (54.6 Кб, 11 просмотров)
0
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,760
09.02.2021, 20:53
Лучший ответ Сообщение было отмечено W0rtX как решение

Решение

W0rtX, у вас в 8 строке Гаусс, а в 9ой Морле. 'cmor1.0-0.4' я заменил на 'cmor7.0-1.0' и еще немного изменил вывод графиков:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import numpy as np
import pywt
from matplotlib import pyplot as plt
times=np.arange(0, 20, 0.001)
datas=np.sin(3*2*np.pi*times)
 
dt = 1 / 1000
scales = np.arange(0.1, 10, 0.01)
f = pywt.scale2frequency("cmor7.0-1.0", scales) / dt
[coefficients, frequencies] = pywt.cwt(datas, f, 'cmor7.0-1.0', dt)
 
power = (np.abs(coefficients)) 
period = 1. / frequencies
 
fig, ax = plt.subplots(figsize=(15, 10))
#im = ax.contourf(times, scales, power, extend='both',cmap="gray")
im = ax.imshow( power, aspect='auto', origin='lower', extent=[0,20, 0.1, 10])
 
 
#plt.plot(times, datas)
plt.show()
В итоге получил скейлограмму:
Миниатюры
Вейвлеты  
1
9 / 5 / 4
Регистрация: 11.12.2016
Сообщений: 166
09.02.2021, 21:12  [ТС]
u235, Большое спасибо, вейвлетами крутил уже от безысходности
0
9 / 5 / 4
Регистрация: 11.12.2016
Сообщений: 166
11.02.2021, 21:23  [ТС]
u235, прошу прощения, что не по теме, но может быть вы можете знать ответ - имееются несколько сигналов, и по каждому нужно сделать вейвлетное преобразование
Вот поэтому смотрю в сторону распаралеливания процессов - но тут незадача: время обработки сигнала последовательно меньше, чем если распаралелить
Возможно я что то не правильно делаю, но смотря примеры в интернете, вроде как все верно
Код прилагаю:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def wavelet(i):
    datas = arrayofdatafile[:, i]
    [coefficients, frequencies] = pywt.cwt(datas, f, 'cmor7.0-1.0', dt)
    #print("Graph's start")
    #a = timeit.default_timer()
    power = (np.abs(coefficients))
    #fig, ax = plt.subplots(figsize=(15, 10))
    #im = ax.imshow(power, aspect='auto', origin='lower', extent=[0, l * dt, 1, 5])
    #plt.savefig('saved' + str(i) + '.png')
    #plt.close()
    #plt.show()
    #print("Graph's complete. Time is: " + str(timeit.default_timer() - a))
 
threads = []
a = timeit.default_timer()
for i in range(0, 27):
    threads.append(threading.Thread(target=wavelet, args=(i, )))
    threads[i].start()
    threads[i].join()
 
#print("Number of processed electrode is: " + str(i))
print("Wavelet's complete. Time is: " + str(timeit.default_timer() - a))
#plt.show()
0
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,760
11.02.2021, 22:01
W0rtX, у вас нет распараллеливания. строка 18. запускает 0-ой поток, а строка 19 - ждет его завершения, затем запускается 1-ый поток, опять ждем его завершения...
Попробуйте заменить 16-19 строки на:

Python
1
2
3
4
5
6
for i in range(0, 27):
    threads.append(threading.Thread(target=wavelet, args=(i, )))
    threads[i].start() #старт всех потоков
 
for i in range(0, 27):
    threads[i].join()

Кстати, почему непрерывное вейвлет-преобразование, а не дискретное (оно быстрее)? Почему именно комплексный Морле?
1
9 / 5 / 4
Регистрация: 11.12.2016
Сообщений: 166
11.02.2021, 22:29  [ТС]
u235, по сути это вводные данные, если Вы знаете, как это можно еще ускорить - был бы очень признателен и премного благодарен
0
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,760
11.02.2021, 22:32
W0rtX, как звучит полное задание? Что есть и что нужно получить в итоге?
0
9 / 5 / 4
Регистрация: 11.12.2016
Сообщений: 166
11.02.2021, 22:40  [ТС]
u235, нужно построить вейвлетные поверхности максимально быстрым способом для нескольких сигналов

Добавлено через 2 минуты
u235, просто раньше писал на C# с такими данными, так как там это легче было сделать именно такими вводными
Цитата Сообщение от u235 Посмотреть сообщение
Кстати, почему непрерывное вейвлет-преобразование, а не дискретное (оно быстрее)? Почему именно комплексный Морле?
Но увидев, что может делать python - решил, что лучше копать в его сторону, и тут все делать легче и быстрее
0
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,760
12.02.2021, 07:13
W0rtX, если речь о скейлограммах, то есть модуль, специально для их быстрого построения, установка pip3 install scaleogram
См. примеры:
https://github.com/alsauve/sca... ency.ipynb
1
9 / 5 / 4
Регистрация: 11.12.2016
Сообщений: 166
26.10.2021, 11:09  [ТС]
u235, Добрый день!
Спасибо за вашу помощь, в свое время очень помогли!
Не подскажите один вопрос, для чего используется
Python
1
f = pywt.scale2frequency("cmor7.0-1.0", scales) / dt
,
Насколько я понимаю, то эта функция перерводит масштаб в частоту, но у нас уже ведь есть частоты
Python
1
scales = np.arange(0.1, 10, 0.01)
, получается, что этот код переводит частоты в - частоты?
0
5516 / 2869 / 571
Регистрация: 07.11.2019
Сообщений: 4,760
26.10.2021, 18:22
W0rtX, не вникал в код, но scales это масштаб. А частота это обратная к нему величина для данного вейвлета.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.10.2021, 18:22
Помогаю со студенческими работами здесь

Вейвлеты на STM32F4
Почему я не могу найти информацию во вейвлет преобразованию (обработке сигналов) на STM32F4? Исходный сигнал int16 с частотой семплирования...

Получить спектр аудио сигнала используя вейвлеты
Кто знает, как получить значения спектра аудиосигнала, используя wavelet. У меня есть амплитудные значения. Но я не знаю, как получить...

Требуется изучить вейвлеты. Нужна доступная литература
Требуется изучить вейвлеты. Мною были прочитаны книги: Юкио Сато. Обработка сигналов. Первое знакомство (начинающим) Стивен В.Смит....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru