Автор |
Сообщение |
|
Дата: 13 Янв 2006 17:41:57
#
Фильтр Бесселя
|
|
Дата: 13 Янв 2006 17:42:24
#
При попытке написать фильтр Бесселя, по-видимому где-то вру (с завидной регулярностью) при переходе на z плоскость:
// coeffbin - вычисление биноминальных коэффициентыов
// o - нормированная частота
for (k = 0; k <= N; k++) b[k] = coeffbin(N, k)*o;
for (k = 0; k <= N; k++) {
for (l = 0; l <= k; l++) {
for(j = 0; j <= (N - k); j++) {
q = l + j;
x = pow(-1,l)*coeffbin(k, l)*coeffbin(N - k, j);
x *= d[k];
x *= pow(y,k);
a[q] += x;
}
}
}
//d[k] - коэффициенты передаточной ф-ции H(s) = d0/Bn(s) - n - порядок
//фильтра; Bn = SUMMA(0-n)dk*s^k; dk = (2n-k)!/2^(n-k)/k!/(n-k)!;
//b и a - коэфф. передат. ф-ции
//H(z) = (b[0]+ b[1]*z...b[n]*z^n)/(a[0]+a[1]*z+...a[n]*z^n)
|
Реклама Google
|
|
|
Дата: 13 Янв 2006 18:17:48
#
sgkha
Ну и что дальше? Во первых не совсем по теме сайта, во вторых, к примеру я допустим иногда программирую, ну и что? Нет ни какого желания выискивать чьи-то синтиктические, логические ошибки в их произведениях, для этого есть куча форумов по C, С+, С++ и других, где люди готовы и могут помочь, для этого те форумы и созданы, тут со своими бы ошибками разобраться. Одно спросить про алгоритм, а у тебя конкретный код, включай отладчик и ищи сам.
|
|
Дата: 13 Янв 2006 22:03:29
#
А вот некоторое время назад "цифровую обработку в широком смысле этого слов" в отдельное направление выделить хотели...
MOOD: с недоумением
|
|
Дата: 14 Янв 2006 00:42:31
#
При попытке написать фильтр Бесселя, по-видимому где-то вру
1) coeffbin == это что? Свое или готовое?
2) Объясните словами и символами, как это считать, и я помогу сделать это на C.
|
|
Дата: 14 Янв 2006 10:41:54
#
Altair
Нашел я эту тему, там нет ни слова о разборе чужих кодов, поиске ошибок, но дело не в этом, а в том, что, что бы разобраться в чужих ошибках нужно стать соавтором проэкта, а это головняк еще тот, если есть время и желание заниматься этим у dimss то и флаг ему в руки.
|
|
Дата: 16 Янв 2006 12:37:31
#
to all
Приношу извинения за некорректно сформулированный вопрос.
Итак:
H(s) - вычисляю правильно (сравниваю с результатами, получаемыми при помощи готовых пакетов)
Для фильтра Бесселя
H(s) = d0/Bn(s) - n - порядок фильтра; Bn = SUMMA(0-n)dk*s^k; dk = (2n-k)!/2^(n-k)/k!/(n-k)!;
Правильно ли я понимаю, что заменив s->(1-z)/(1+z) я получу H(z)?
Результат практически совпадает с получаемым в пакете (с точностью лучше 3*10^-4), но результат расходится. Если подставить значения из пакета- получается правдоподобный результат.
|