Перейти к содержанию
    

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

Каких-то широкоизвестных приемов (для изменения Fs) я не припомню, и, думаю, вряд ли они есть, т.к. для безразмерного (деленного на Fs) фильтра это будет совсем другой фильтр.

Если есть возможность пересчитать новый фильтр, то нужно пересчитывать - благо из временной области в частотную можно туда-сюда отображать.

Лучше потратить усилия в этом направлении.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Умножение / деление z на коэффициент еще не попробовал.

Поворот нулей и полюсов на

\(\phi_p/1.21\) 

и  

\(\phi_z/1.21 \)

С виду работает. Но амплитуда АЧХ почему-то раза примерно в 2 больше. 

А не нужно доворачивать нули и полюса на половину угла? Типа ось растягивается на коэффициент 1.21. Но у нас по факту 2 интервала -Fs/2 ... 0 и 0 ... Fs/2. И комплексно сопряженных корня два. Мы каждый из них доворачивая на

\(\phi_z/1.21 \)

угол между корнями увеличивается в \(2\cdot\phi_z/1.21 \) раза.

Есть здравый смысл в этом?

8 minutes ago, adnega said:

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

Каких-то широкоизвестных приемов (для изменения Fs) я не припомню, и, думаю, вряд ли они есть, т.к. для безразмерного (деленного на Fs) фильтра это будет совсем другой фильтр.

Если есть возможность пересчитать новый фильтр, то нужно пересчитывать - благо из временной области в частотную можно туда-сюда отображать.

Лучше потратить усилия в этом направлении.

Вас понял! Спасибо! ☺️

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Методом тыка понял что . . . 

1. Пересчитываю передаточную ф-цию в zpk (матлаб). Z - нули, P - полюса, K - коэффициет усиления.
2. Вращаю Z и P. 
3. Конвертирую назад в передаточную ф-цию.
Получалось, как писал выше не та амплитуда.
4. Добавил изменение К = К/1,21.

Теперь по амплитуде до 3-го знака совпадает.

Зато по частоте не очень совпадает. 

Вобщем пока разбираюсь дальше.

Изменено пользователем aBoomest

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 17.04.2023 в 08:52, aBoomest сказал:

Получалось, как писал выше не та амплитуда.

Да, по частоте на первый взгляд сдвинется, но в АЧХ в области пропускания будут сильные колебания.

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

Наверное, можно попробовать ввести частотную зависимость всех коэффициентов, а потом как-то обратить в многочлены,

то там скорее всего тригонометрические функции будут которые нужно будет в ряд раскладывать и т.п.

Наверное, проще все по правильному сразу сделать без хитрения.

Кста, будут интересно сравнить новую и старую диаграммы - скорее всего ничего общего на них не будет ((

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 18.04.2023 в 12:23, aBoomest сказал:

Похоже сдвигать надо не на

1.211.21 ,

а на

1.21π1.21⋅π

Ну т.е. делить.

Почему? Т.е. если нужно преобразовать условно из 40 кГц в 40,001 кГц, то сдвигаем на 1,000025 * π - более чем в три раза?!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не знаю честно говоря. Я пока не все моменты прочувствовал в задаче.

Сдвигал на 1.21. Никак не попадало. От балды умножил 1.21 на Пи - сдвиг почти идеально совпал.

Изменено пользователем aBoomest

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 18.04.2023 в 14:02, aBoomest сказал:

Я пока не все моменты прочувствовал в задаче.

Для полного погружения можно ниточки привязать от точки (нескольких точек) на окружности до всех нулей-полюсов.

Потом точки на окружности сдвинуть в соответствии с изменением Fs - ниточки утянут нули-полюса куда-то в новое место.

Это будет больше похоже на правду, но вряд ли такое получится для всех точек окружности.

Можно попробовать две точки по краям фильтра...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У нас же на диаграмме нулей и полюсов \(\pi\) соответствует частоте \(f_S \over 2\)  на частотной оси?
Если так должно было без умножения сдвига угла на \(\pi\) работать.
Не могу для себя это объяснить. Попробую простой какой-нибудь пример, отпишусь.

PS: Спасибо за ответы!

Изменено пользователем aBoomest

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

57 minutes ago, aBoomest said:

Не могу для себя это объяснить. Попробую простой какой-нибудь пример, отпишусь.

iirrateup

говорят работает, не проверял:

Spoiler
function [b, a] = BiquadCoefficientConverter(b, a, inFS, outFS)

d(1)=b(1)+b(2)+b(3);
d(2)=2.0*(b(1)-b(3));
d(3)=b(1)-b(2)+b(3);
c(1)=1+a(2)+a(3);
c(2)=2.0*(1.0-a(3));
c(3)=1.0-a(2)+a(3);

r=outFS/inFS;

invc=1/(c(1)+r*(c(2)+r*c(3)));
b(1)=(d(1)+r*(d(2)+r*d(3)))*invc;
b(2)=2.0*(d(1)-r^2*d(3))*invc;
b(3)=(d(1)-r*(d(2)-r*d(3)))*invc;
a(1)=1;
a(2)=2.0*(c(1)-r^2*c(3))*invc;
a(3)=(c(1)-r*(c(2)-r*c(3)))*invc;

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 18.04.2023 в 16:01, _4afc_ сказал:

iirrateup

говорят работает, не проверял:

Цитата

Upsample IIR filter by integer factor

В целое число раз?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, adnega said:

В целое число раз?

можно и не в целое, например для 33 -> 40

Spoiler
inFS  = 33;
outFS = 40;

[b, a]          = ellip(3,0.1,30,0.409);      
[alpnum,alpden] = allpasslp2lp(0.5, 0.5*(inFS/outFS));
[z2, p2, k2]    = zpkftransf(roots(b), roots(a), b(1), alpnum, alpden);

H=fvtool(b, a, k2*poly(z2), poly(p2));
H.Fs(1)=inFS;
H.Fs(2)=outFS;
legend(H,"OLD","NEW");

%% -- OLD -------------------------------------
% a =    1.0000   -0.1737    0.5160   -0.0588
% b =    0.1969    0.4449    0.4449    0.1969
%% -- NEW -------------------------------------
% a =    1.0000   -0.7183    0.6441   -0.1317
% b =    0.1386    0.2585    0.2585    0.1386

 

33to40.thumb.png.bdcb733cba8c5fd8c8452364540ba1ee.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо! Завтра попробую!

PS: Сразу интересно, почему нет ratedown?

 

Изменено пользователем aBoomest

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробую еще на днях. Но 5 минут изучения этой ф-ции с целыми коэффициентами показали что это не то. Поднятие частоты искажает АФЧХ. По факту это просто добавление нулевых коэффициентов. Количество добавляемого пропорционально этому самому целому числу. Поэтому и ratedown наверно нету.

Про не целое, спасибо. Обязательно посмотрю.

Изменено пользователем aBoomest

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо всем!

13 hours ago, _4afc_ said:

можно и не в целое, например для 33 -> 40

Можете пожалуйста пояснить код?

1. Я не понимаю смысла ф-ции allpasslp2lp, которая возвращает alpnum alpden?
2. И не понимаю какое они значение играют в нижеследующей ф-ции zpkftransf?

На сколько я понял, непосредственно предложенный код меняет параметры фильтра (т.е. если например полоснопропускающий фильтр, полоса нового фильтра для новой \(f_s\) будет другая, пик сместится). Это так?

18 hours ago, adnega said:

Почему? Т.е. если нужно преобразовать условно из 40 кГц в 40,001 кГц, то сдвигаем на 1,000025 * π - более чем в три раза?!

По поводу остального ранее написанного. На счет \(\pi\) - это была полная чушь с моей стороны. В коде была ошибка и так совпало отличие примерно было равно 3, поэтому чудом добавление \(\pi\) как будто помогло.
Правильный подход тот, что задуман в начале дискуссии - сдвиг на относительную частоту (точно ставит АФЧХ туда куда надо).

Изменено пользователем aBoomest

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...