Jump to content
    

Операция обратная к "скользящему среднему"

Guest TSerg

Для любителей "непараболоидов" - из общеизвестных циркуляторов:

 

step := TWOPI/count;

k := 2*cos(step);

Xii :=0;

Xii :=-a*sin(step);

 

for i :=0 to count

{Xi := k*Xii - Xiii; Xiii := Xii; Xii := Xi }

 

Share this post


Link to post
Share on other sites

Совсем простой sin-генератор :)
Хе-хе.

Стреляных воробьёв на мякине не проведёшь. :)

Потенциала для уменьшения погрешности нет.

 

Для любителей "непараболоидов" - из общеизвестных циркуляторов:
Дык, это тот же самый резонатор 2-го порядка, с заданием начальных условий.

Только, как мы уже выяснили, он неустойчив.

 

Я подобное применял для 16-битной арифметики, но там нужно было вычислить последовательность сравнительно небольшой длины при заданной частоте и фазе, поэтому о накоплении ошибки речь не шла.

Здесь же имеется интерес получить систему без накопления (ну, или с "забыванием") ошибок.

Программку причешу вечером...

Share this post


Link to post
Share on other sites

Дык, это тот же самый резонатор 2-го порядка.

Только, как мы уже выяснили, он неустойчив. И содержит 2 отличных от единицы коэффициента вместо одного.

 

Да нормальный резонатор, нужно только АРУ к нему приделывать :) чтобы он не расходился. Делал когда-то модем в котором АРУ (демодулятора) управляла амплитудой гетеродина сделанного на таком генераторе.

Share this post


Link to post
Share on other sites

Ну да, вроде того.

Только АРУ должна быть простой, и не требовать большей разрядности вычислений, чем резонатор. Иначе неинтересно.

Share this post


Link to post
Share on other sites

Guest TSerg

Ну.. так надо же было чем-то заполнить паузу о главной теме ветки - решение обратной задачи (ресторация сигнала) :)

 

P.S.

Еще, попытаюсь вспомнить что-то из практического прошлого по поводу взаимных замечаний thermit и моих о допустимости максимального приближения к 1.

Вот что-то было же, натыкался на малых разрядностях на наследственные ошибки, приводящие к неустойчивости.

Share this post


Link to post
Share on other sites

Ну да, вроде того.

Только АРУ должна быть простой, и не требовать большей разрядности вычислений, чем резонатор. Иначе неинтересно.

Так АРУ можно сделать на основе того же "скользящего среднего" )))))))

Share this post


Link to post
Share on other sites

Guest TSerg

Решения с той или иной АРУ - это отдельный разговор, кстати.

Все они укладываются в разряд устойчивых решений для динамических систем с обратной связью (с относительно небольшой нелинейностью) - ряды Вольтерра (Vino Volterra) II рода ( для дикретный системы - ряды Винера, или, что то же - ряд Ито).

 

P.S.

Что интересно, последовательное изучение и развитие ранних математических "предсказателей" ( Волтерра, Винер/Колмогоров, Габор,...) таки привело Ивахненко к созданию мощного мат. -практического аппарата (МГУА - метод группового учета аргументов), адекватно решающему многие практические обратные задачи.

Share this post


Link to post
Share on other sites

Ну.. так надо же было чем-то заполнить паузу о главной теме ветки - решение обратной задачи (ресторация сигнала) :)
По-моему, здесь этим занимаются все. В ожидании чего-то интересного. :)

 

Так АРУ можно сделать на основе того же "скользящего среднего" )))))))
Неужели оно!? А как?

 

Вот что-то было же, натыкался на малых разрядностях на наследственные ошибки, приводящие к неустойчивости.
Это естественно.

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

Впрочем, боюсь, что это выльется в изобретение велосипеда... :(

 

 

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

Для резонатора без "затухания" на отсчёт это одна операция умножения и одна - сложения.

Share this post


Link to post
Share on other sites

Guest TSerg

>Так АРУ можно сделать на основе того же "скользящего среднего" )))))))

 

Любая АРУ делается на основе замыкания выхода и входа, т.е. ОС.

Как ее сделать (линейность/нелинейность, вид извлечения и подачи уровня, тип фильтрации) - это отдельный вопрос.

Share this post


Link to post
Share on other sites

Увеличение кратности полюсов резонатора способно сильно улучшить качество выходного сигнала, с сохранением "добротности".

P=1;        % кратность полюсов

N=2*P+1;

Period=20.2;   % период сигнала в отсчётах (дробный допустим)

Damp=0.99;  % затухание
Push=(1-Damp);

y=zeros(1,10000);
y(1)=Push;

a1=ones(1,3);
a1(2)=-2*cos(2*pi/Period(1)); % 

a=a1;
for (i=2:P)
    a=conv (a, a1);
end

a=a.*(Damp.^[0:(N-1)]); % сдвиг полюсов

for (i=N:length(y)+1)
    y(i)=sum(-a(2:N).*y(i-(1:N-1)));
    if(y(i)*y(i-1)<0)
        y(i)=y(i)+Push*sign(y(i)); % "подкачка"
    end
end

figure (1)
plot (y(1:1000))
grid on

yw = blackmanharris(2048).*y(7001:9048)';
Y = fft(yw);
Ya= abs(Y(1:1024));
Ya=Ya/max(Ya);

figure(2)
semilogy(0:1023, Ya)
xlim ([0,1023])
ylim ([1e-4, 1])
grid on

clear all;

 

Картинка слева - полюса имеют кратность 1, справа - 2. Задаются параметром P. Нормировка отсутствует. Во втором случае Damp=0.98.

post-4987-1389978920_thumb.pngpost-4987-1389978929_thumb.png

Share this post


Link to post
Share on other sites

Guest TSerg

Есть и другой вариант корректировки "точной" генерации синуса на основе расходящегося "циркулятора".

 

Две параллельные системы:

1. "точная", но расходящаяся;

2. не точная, но устойчивая.

 

Пример обеих был приведен выше (условный пример).

 

По "разнице" - выполняется корректировка условий возбуждения в "точной".

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

 

 

Share this post


Link to post
Share on other sites

Пример обеих был приведен выше (условный пример).
Имеется в виду параболоида и резонатор?

Если да, то считать многовато. Параболоида требует большего количества вычислений, чем резонатор 2-го порядка.

И ещё не совсем понятно, что значит получить разницу?

 

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

 

Разбив многомодовый генератор на одномодовые, амплитуду (и фазу) каждого измерить и выдержать гораздо легче.

Программку сделаю, наверное, завтра.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...