Guest TSerg January 17, 2014 Posted January 17, 2014 · Report post Для любителей "непараболоидов" - из общеизвестных циркуляторов: 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 } Quote Share this post Link to post Share on other sites More sharing options...
Stanislav 0 January 17, 2014 Posted January 17, 2014 · Report post Совсем простой sin-генератор :)Хе-хе. Стреляных воробьёв на мякине не проведёшь. :) Потенциала для уменьшения погрешности нет. Для любителей "непараболоидов" - из общеизвестных циркуляторов:Дык, это тот же самый резонатор 2-го порядка, с заданием начальных условий. Только, как мы уже выяснили, он неустойчив. Я подобное применял для 16-битной арифметики, но там нужно было вычислить последовательность сравнительно небольшой длины при заданной частоте и фазе, поэтому о накоплении ошибки речь не шла. Здесь же имеется интерес получить систему без накопления (ну, или с "забыванием") ошибок. Программку причешу вечером... Quote Share this post Link to post Share on other sites More sharing options...
alex_os 0 January 17, 2014 Posted January 17, 2014 · Report post Дык, это тот же самый резонатор 2-го порядка. Только, как мы уже выяснили, он неустойчив. И содержит 2 отличных от единицы коэффициента вместо одного. Да нормальный резонатор, нужно только АРУ к нему приделывать :) чтобы он не расходился. Делал когда-то модем в котором АРУ (демодулятора) управляла амплитудой гетеродина сделанного на таком генераторе. Quote Share this post Link to post Share on other sites More sharing options...
Stanislav 0 January 17, 2014 Posted January 17, 2014 · Report post Ну да, вроде того. Только АРУ должна быть простой, и не требовать большей разрядности вычислений, чем резонатор. Иначе неинтересно. Quote Share this post Link to post Share on other sites More sharing options...
Guest TSerg January 17, 2014 Posted January 17, 2014 · Report post Ну.. так надо же было чем-то заполнить паузу о главной теме ветки - решение обратной задачи (ресторация сигнала) :) P.S. Еще, попытаюсь вспомнить что-то из практического прошлого по поводу взаимных замечаний thermit и моих о допустимости максимального приближения к 1. Вот что-то было же, натыкался на малых разрядностях на наследственные ошибки, приводящие к неустойчивости. Quote Share this post Link to post Share on other sites More sharing options...
Serg76 0 January 17, 2014 Posted January 17, 2014 · Report post Ну да, вроде того. Только АРУ должна быть простой, и не требовать большей разрядности вычислений, чем резонатор. Иначе неинтересно. Так АРУ можно сделать на основе того же "скользящего среднего" ))))))) Quote Share this post Link to post Share on other sites More sharing options...
Guest TSerg January 17, 2014 Posted January 17, 2014 · Report post Решения с той или иной АРУ - это отдельный разговор, кстати. Все они укладываются в разряд устойчивых решений для динамических систем с обратной связью (с относительно небольшой нелинейностью) - ряды Вольтерра (Vino Volterra) II рода ( для дикретный системы - ряды Винера, или, что то же - ряд Ито). P.S. Что интересно, последовательное изучение и развитие ранних математических "предсказателей" ( Волтерра, Винер/Колмогоров, Габор,...) таки привело Ивахненко к созданию мощного мат. -практического аппарата (МГУА - метод группового учета аргументов), адекватно решающему многие практические обратные задачи. Quote Share this post Link to post Share on other sites More sharing options...
Stanislav 0 January 17, 2014 Posted January 17, 2014 · Report post Ну.. так надо же было чем-то заполнить паузу о главной теме ветки - решение обратной задачи (ресторация сигнала) :)По-моему, здесь этим занимаются все. В ожидании чего-то интересного. :) Так АРУ можно сделать на основе того же "скользящего среднего" )))))))Неужели оно!? А как? Вот что-то было же, натыкался на малых разрядностях на наследственные ошибки, приводящие к неустойчивости.Это естественно. Можно попробовать вывести аналитическое выражение для предела устойчивости. Только нужно грамотно поставить задачу. Впрочем, боюсь, что это выльется в изобретение велосипеда... :( Решения с той или иной АРУ - это отдельный разговор, кстати.В данном случае, интерес может представлять только АРУ, сравнимая по количеству вычислительных затрат с генерацией. Для резонатора без "затухания" на отсчёт это одна операция умножения и одна - сложения. Quote Share this post Link to post Share on other sites More sharing options...
Guest TSerg January 17, 2014 Posted January 17, 2014 · Report post >Так АРУ можно сделать на основе того же "скользящего среднего" ))))))) Любая АРУ делается на основе замыкания выхода и входа, т.е. ОС. Как ее сделать (линейность/нелинейность, вид извлечения и подачи уровня, тип фильтрации) - это отдельный вопрос. Quote Share this post Link to post Share on other sites More sharing options...
Stanislav 0 January 17, 2014 Posted January 17, 2014 · Report post Увеличение кратности полюсов резонатора способно сильно улучшить качество выходного сигнала, с сохранением "добротности". 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. Quote Share this post Link to post Share on other sites More sharing options...
Guest TSerg January 17, 2014 Posted January 17, 2014 · Report post Есть и другой вариант корректировки "точной" генерации синуса на основе расходящегося "циркулятора". Две параллельные системы: 1. "точная", но расходящаяся; 2. не точная, но устойчивая. Пример обеих был приведен выше (условный пример). По "разнице" - выполняется корректировка условий возбуждения в "точной". Обратной связи, в классическом смысле - нет, скорее можно говорить об адаптивной системе с моделью. Quote Share this post Link to post Share on other sites More sharing options...
Stanislav 0 January 17, 2014 Posted January 17, 2014 · Report post Пример обеих был приведен выше (условный пример).Имеется в виду параболоида и резонатор? Если да, то считать многовато. Параболоида требует большего количества вычислений, чем резонатор 2-го порядка. И ещё не совсем понятно, что значит получить разницу? После нескольких экспериментов, я пришёл к выводу, что если требуется сумма "гармонических" сигналов с разными периодами, их лучше получать по отдельности, а потом складывать. Попытка соорудить единый многомодовый резонатор натыкается на препятствие в виде сложности поддержания стабильной амплитуды каждой из мод. Разбив многомодовый генератор на одномодовые, амплитуду (и фазу) каждого измерить и выдержать гораздо легче. Программку сделаю, наверное, завтра. Quote Share this post Link to post Share on other sites More sharing options...