реклама на сайте
подробности

 
 
> Помогите опознать алгоритм
ataradov
сообщение Oct 9 2011, 19:33
Сообщение #1


Профессионал
*****

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



Помогите опознать алгоритм пожалуйста.

Для размерности 3 выглядит вот так:

CODE
      a0[0] = a[1] * a[2];
      a0[1] = b[1] * a[2] + a[1] * b[2];
      a0[2] = b[1] * b[2];

      a0[0] += a[0] * a[2];
      a0[1] += b[0] * a[2] + a[0] * b[2];
      a0[2] += b[0] * b[2];

      a0[0] += a[0] * a[1];
      a0[1] += b[0] * a[1] + a[0] * b[1];
      a0[2] += b[0] * b[1];


a, b - исходные векторы размерности 3, a0 - результат.

В коде видны явные закономерности, похоже на какую-то стандартную операцию над векторами, но не могу понять какую именно.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
ataradov
сообщение Oct 11 2011, 16:19
Сообщение #2


Профессионал
*****

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



Вот эквивалентный код на Matlab-e:
CODE
arr = [261.4508114 261.5063567 261.6451613];
avg = sum(arr) / length(arr);

a = (2.0 - arr / avg) / (2.0 * avg);
b = (1.0 - arr / avg) * (1) * pi;

az1 = conv([1.0, 0.0], [a(2) b(2)]);
az1 = conv(az1, [a(3) b(3)]);

az2 = conv([1.0, 0.0], [a(1) b(1)]);
az2 = conv(az2, [a(3) b(3)]);

az3 = conv([1.0, 0.0], [a(1) b(1)]);
az3 = conv(az3, [a(2) b(2)]);

a0 = az1+az2+az3;

a1 = conv(az3, [a(2) b(3)]);

tt0 = 222.9164178;
tt1 = -1.571716919;

for i = 1:4,
  z(i) = tt0 * a1(i) + j*(tt1 * a1(i));
  if i > 1,
    z(i) = z(i) - j*a0(i-1);
  end;
end;

r = roots(z);


Интересное наблюдение - если в arr все числа одинаковые, то два корня полинома z равны нулю, а один не равен, именно он определяет частоту и скорость затухания. То-есть вся эта процедура стремится распределить скорости затухания по струнам так, чтобы имитировать двухстадийное затухание (резкий спад, потом плавное затухание), присущее настояшему музыкальному инструменту.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Taradov Alexander   Помогите опознать алгоритм   Oct 9 2011, 19:33
- - iiv   Пусть у Вас есть матрица сдвига P (0 1 0) (0 0 1)...   Oct 9 2011, 20:40
- - Taradov Alexander   Вот более полный код, для N=3 эквивалентен вышепри...   Oct 10 2011, 12:11
|- - iiv   a1 инициализирован только в первых 4 элементах. А ...   Oct 10 2011, 14:52
|- - Taradov Alexander   QUOTE (iiv @ Oct 10 2011, 18:52) a1 иници...   Oct 10 2011, 15:10
- - Taradov Alexander   Немного становится понятнее. В цикле тут происходи...   Oct 11 2011, 06:12
- - Taradov Alexander   Нашел статью, в которой используется похожий подхо...   Oct 11 2011, 20:53
|- - iiv   Цитата(Taradov Alexander @ Oct 12 2011, 02...   Oct 12 2011, 15:09
- - Taradov Alexander   LP - это линейное программирование? Если что, вот...   Oct 12 2011, 18:10
|- - iiv   Я думал, что линейное предсказание, но, похоже, ош...   Oct 15 2011, 19:30
- - Taradov Alexander   Похоже и не получится, похоже, что это результат н...   Oct 15 2011, 19:47
- - Taradov Alexander   Продолжаю ковырять этот алгоритм. Начал его исслед...   Oct 19 2011, 16:07


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 17:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.0136 секунд с 7
ELECTRONIX ©2004-2016