|
|
  |
Аномалии с обертонами |
|
|
|
Jan 16 2011, 09:22
|

Профессионал
    
Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202

|
QUOTE (Oldring @ Jan 16 2011, 15:14)  Я уже спрашивал про "три струны". По ссылке в Википедии выше упоминалось их влияние.  Три труны дают три моды колебаний со слегка отличающимися частотами и с сильно отличающимися скоростями отдачи энергии и, следовательно, затухания. В результате имеем не затыхающую экспоненту, а некоторую сложную огибающую. Вы это учитываете в модели? Да, я увлекся нотой C4. Видимо можно посмотреть на однострунные ноты. Вопрос: с какой ноты начинается одна струна обычно? Не хочется брать самые высокие - очень все быстро затухает. Но с другой стороны, наличие 3-х струн не должно помешать построению такого-же сигнала, как и оригинальный (максимально близкого) из огибающих гармоник. Да, сама форма огибающих будет сложнее, но какое это имеет значение.
|
|
|
|
|
Jan 16 2011, 18:34
|
Участник

Группа: Участник
Сообщений: 70
Регистрация: 15-10-07
Из: Ιθάκη
Пользователь №: 31 371

|
Цитата(Taradov Alexander @ Jan 15 2011, 17:54)  Вот. d - запись ноты C4, t - время, freq - частоты 47 гармоник (старшие гармоники не кратны нулевой), F- основная частота, Fs - частота дискретизации. Для этих данных результаты подгонки модели a*exp(j*2*pi*f*t) здесь (a = |a|*exp(j*arg(a)) и f = freq+j*ext - комлексные параметры):
Estimation_result.rar ( 20.11 килобайт )
Кол-во скачиваний: 273Рядом с результатами нелинейного оценивания параметров модели приведены результаты использования линейного метода наименьших квадратов по значениям частот гармоник, которые были в файле с данными. Реализуется линейный МНК в MATLAB очень просто: F = [-freq(end:-1:1)'; freq']; E = exp(j*2*pi*F*t).'; H = E'*E; g = E'*s; a = H\g; Вектор амплитуд дает вам абсолютное значение амплитуды |a| и ее фазу. Приведенные результаты показывают, что для небольшого интервала времени (50 мс) затухание слабо проявляется и можно обойтись без трудоемкого и времязатратного нелинейного оценивания, чтобы получить параметры модели, позволяющие имитировать исходный сигнал с отклонением не более десятых долей единиц процентов от общей энергии сигнала. Для интервалов порядка 0.4 с не учет затухания дает ошибку в десятки процентов, в то время как учет - 0.5%. Анализ оценок амплитуд гармоник для разных интервалов времени показывает, что со временем происходит процесс перераспределения энергий гармоник между ними.
|
|
|
|
|
Jan 16 2011, 19:28
|

Профессионал
    
Группа: Участник
Сообщений: 1 014
Регистрация: 8-01-07
Из: San Jose, CA
Пользователь №: 24 202

|
QUOTE (Ulysses @ Jan 16 2011, 21:34)  Для этих данных результаты подгонки модели a*exp(j*2*pi*f*t) Спасибо, посмотрю. QUOTE (Ulysses @ Jan 16 2011, 21:34)  F = [-freq(end:-1:1)'; freq']; E = exp(j*2*pi*F*t).'; После первой строчки F становится вектором длинны 2*length(freq) и произведение F*t дает ошибку о несогласованности размерностей перемножаемых векторов (t тоже вектор, но длинный). Можно тут пояснить? Касательно предложения petrov: хочу проверить правильно-ли я понял, результат есть, но может еще лучше можно. Что я сделал: перемножил исходный сигнал на sin(wt) и cos(wt), отфильтровал составляющие удвоенной частоты, получил снесенные в 0 квадратуры. Дальше, так как начальная фаза неизвестна, то пришлось возвести их в квадрат и сложить, после извлечения корня получился модуль амплитуды огибающей. Это в принципе прокатывает, так как все переходы этого модуля через 0 приходятся на момент почти затухшего звучания и проблемы с фазой в этих местах не слышны. Это лучшее что можно сделать в данной ситации или можно лучше? Наверное можно попробовать ФАПЧ и следить за фазой, но очень похоже на overkill для данной задачи.
|
|
|
|
|
Jan 18 2011, 00:21
|
Участник

Группа: Участник
Сообщений: 70
Регистрация: 15-10-07
Из: Ιθάκη
Пользователь №: 31 371

|
Цитата(Taradov Alexander @ Jan 16 2011, 21:28)  После первой строчки F становится вектором длинны 2*length(freq) и произведение F*t дает ошибку о несогласованности размерностей перемножаемых векторов (t тоже вектор, но длинный). Можно тут пояснить? После считывания ваших данных load('c4_data'); я их для собственного удобства переприсваивал s = d; t = t'; Вектор t должен быть строкой, чтобы результат вычисления E = exp(j*2*pi*F*t) был матрицей комплексных экспонент.
|
|
|
|
|
Jan 18 2011, 17:13
|

Местный
  
Группа: Свой
Сообщений: 323
Регистрация: 13-05-05
Пользователь №: 4 986

|
Цитата(Taradov Alexander @ Jan 16 2011, 14:39)  Поточечно синтез с оригиналом естественно не совпадают, но результат синтеза звучит просто отменно. Если результат устраивает, то в чем тогда проблемы? Разве задача не решена? Повторите создание модели для групп струн (например пооктавно - для ноты До и менять ей частоту звучания в пределах октавы или еще меньше, с учетом изменения технологии навивки струн) и все наверное.
--------------------
О сколько нам открытий чудных ...
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|