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

 
 
11 страниц V  « < 8 9 10 11 >  
Reply to this topicStart new topic
> Операция обратная к "скользящему среднему"
ViKo
сообщение Jan 16 2014, 19:30
Сообщение #136


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(thermit @ Jan 16 2014, 22:18) *
Подайте на вход последовательность 0 1 0 1 ... Или любую рандомную последоватедьность.

Да, полезло... Именно для входного сигнала с частотой, определяемой полюсом фильтра. Спасибо, просвещен!
Go to the top of the page
 
+Quote Post
thermit
сообщение Jan 16 2014, 19:39
Сообщение #137


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата(ViKo @ Jan 16 2014, 22:30) *
Да, полезло... Именно для входного сигнала с частотой, определяемой полюсом фильтра. Спасибо, просвещен!


Да незачто. Хорошо, когда разговор переходит хоть в какую-то конструктивную плоскость и просвещение берет верх над мракобесием.
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Jan 16 2014, 19:52
Сообщение #138


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(ViKo @ Jan 16 2014, 22:01) *
Линейный - в смысле, генерация с постоянной амплитудой, так надо думать. Разве ж это "разнос"? sm.gif
Линейный в том смысле, что погрешности он не усиливает, но и не забывает. sm.gif


Цитата(thermit @ Jan 16 2014, 22:13) *
Недостаток - через некоторое время генерацию разносит вследствие ошибок вычислений.
Можно организовать "демпфирование" и "подкачку" такого резонатора. Тогда его разносить не будет. Цена - некоторая дополнительная погрешность, которую можно минимизировать в соответствии с разрядными возможностями.
Зато просто, как тапочек. sm.gif


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
thermit
сообщение Jan 16 2014, 20:00
Сообщение #139


Знающий
****

Группа: Участник
Сообщений: 781
Регистрация: 3-08-09
Пользователь №: 51 730



Цитата
Stanislav:
Можно организовать "демпфирование" и "подкачку" такого резонатора. Тогда его разносить не будет. Цена - некоторая дополнительная погрешность, которую можно минимизировать в соответствии с разрядными возможностями.
Зато просто, как тапочек.


Те сместить полюс внутрь единичной окружности и подать вход. Это не наш метод. Лучше тогда полиномом...
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Jan 16 2014, 20:05
Сообщение #140


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(thermit @ Jan 17 2014, 00:00) *
Те сместить полюс внутрь единичной окружности и подать вход. Это не наш метод. Лучше тогда полиномом...
Полиномом некошерно - скучно, да и вычислений много.

А вход надо взять как бы с выхода. sm.gif С помощью некого нелинейного преобразования.


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Jan 16 2014, 20:59
Сообщение #141


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

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(ViKo @ Jan 16 2014, 21:52) *
Странно. Фильтр скользящего среднего может быть рекурсивным или нерекурсивным. А обратный - только рекурсивный.


Век живи -- век учись. Даже не могу себе представить рекурсивный фильтр скользящего среднего. Разве такое бывает?
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 16 2014, 21:13
Сообщение #142


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(Tarbal @ Jan 16 2014, 23:59) *
Век живи -- век учись. Даже не могу себе представить рекурсивный фильтр скользящего среднего. Разве такое бывает?

y(n) = y(n-1) + x(n) - x(n - N)
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Jan 16 2014, 22:20
Сообщение #143


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(Tarbal @ Jan 17 2014, 00:59) *
Век живи -- век учись. Даже не могу себе представить рекурсивный фильтр скользящего среднего. Разве такое бывает?
lol.gif
thermit, ликбез пора заканчивать, не в коня корм.

--------------------

"Генератор" одной "синусоиды". Легко можно расширить до целой вязанки. Для этого нужно увеличить количество пар полюсов (порядок фильтра).
Но подкачку придётся делать посложнее.

Код
N=3;
Damp=0.99;

y=zeros(1,1000);
y(1)=0.01;

a=ones(1,N);
a(2)=-1.8; % "частота"
b=N;

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


for (i=3:length(y)+1)
    y(i)=-a(2)*y(i-1)-a(3)*y(i-2);
    if(y(i)*y(i-1)<0)
        y(i)=y(i)+0.01*sign(y(i));
    end
end

figure (1)
plot (y)
grid on

clear all;

Затухание выбрано большим намеренно. Должно пойти даже на малоразрядной арифметике, где с полиномами будет совсем плохо.

ЗЫ. Вот картинки. Ничего не напоминают?
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение

wink.gif

Выходной сигнал не так уж плох для столь малой "добротности" резонатора и примитивного способа подкачки:

Прикрепленное изображение


Сообщение отредактировал Stanislav - Jan 16 2014, 22:50


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Jan 17 2014, 00:45
Сообщение #144


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

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



Цитата(ViKo @ Jan 17 2014, 00:13) *
y(n) = y(n-1) + x(n) - x(n - N)


Ах вот оно что. Термит как раз обратный этому фильтру восстанавливающий фильтр приводил.


Цитата(Stanislav @ Jan 17 2014, 01:20) *
lol.gif
thermit, ликбез пора заканчивать, не в коня корм.

Какой вы приятный собеседник.
Go to the top of the page
 
+Quote Post
alex_os
сообщение Jan 17 2014, 04:58
Сообщение #145


Знающий
****

Группа: Свой
Сообщений: 521
Регистрация: 12-05-06
Пользователь №: 17 030



Цитата(Stanislav @ Jan 17 2014, 02:20) *
"Генератор" одной "синусоиды". Легко можно расширить до целой вязанки. Для этого нужно увеличить количество пар полюсов (порядок фильтра).
Но подкачку придётся делать посложнее.



Т.е. идея состоит в том, чтобы с помощью нелинейности компенсировать демпфирование фильтра или другими словами сделать более добротный фильтр средствами менее точной арифметики?


--------------------
ну не художники мы...
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Jan 17 2014, 06:01
Сообщение #146


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(alex_os @ Jan 17 2014, 08:58) *
Т.е. идея состоит в том, чтобы с помощью нелинейности компенсировать демпфирование фильтра или другими словами сделать более добротный фильтр средствами менее точной арифметики?
Это не совсем фильтр, а именно генератор колебаний, близких к гармоническим. Да, при малой разрядности будет работать.
Не считая "подкачки", на получение отсчёта одного тона требуется всего 2 операции умножения и 1 операция сложения.
Качество выходного сигнала становится особенно хорошим, если период сигнала выбирается кратным целому числу отсчётов.
Вот текст недописанной программы, с которым можно поиграться.
Код
S=1;        % количество сигналов

N=2*S+1;

Per_1=[20 30];   % период сигнала в отсчётах (дробный допустим)

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

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

a1=ones(1,N);
a1(2)=-2*cos(2*pi/Per_1(1)); %

a=a1;

%------------

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

for (i=3: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;


ДПФ при периоде в 20 отсчётов:
Прикрепленное изображение


Выходная последовательность содержит только нечётные гармоники основного тона.


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Jan 17 2014, 06:13
Сообщение #147





Guests






// rate
// r = (0..1]

r := 0.005; // к примеру

for i=0 to 800
p += r;
if(p > 1) p -= 2;
out = p*(1-abs(p));

Совсем простой sin-генератор sm.gif
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 17 2014, 09:13
Сообщение #148


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(TSerg @ Jan 17 2014, 09:13) *
Совсем простой sin-генератор sm.gif

"Параболоид инженера ..." rolleyes.gif
Go to the top of the page
 
+Quote Post
Guest_TSerg_*
сообщение Jan 17 2014, 10:42
Сообщение #149





Guests






Давно кем-то сказано - "чем проще, тем дешевле; чем дешевле, тем быстрее; чем быстрее - тем дороже". sm.gif
Прикрепленное изображение


Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 17 2014, 10:57
Сообщение #150


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Да, на глаз я не различаю, что из них что. 05.gif Просто констатирую. laughing.gif
"Кому и кобыла невеста" (с)
"Ренгент покажет" (с)
Код
%%  TSerg  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

N = 2048;    % Длина последовательности
T = 4;        % Количество периодов в последовательности

% rate r = 0..1
% r = 0.005;
r = T / N * 2;

p = zeros(1, N);
for (i = 2 : N)
  p(i) = p(i - 1) + r;
  if (p(i) > 1)
    p(i) = p(i) - 2;
  end
  g = 4 .* p .* (1 - abs(p));    % амплитуда равна 4 * 0.25
end

figure(1)
plot(1 : N, g)
xlim([0, N])
grid on

wg = blackmanharris(N) .* g(1 : N)';
sp = fft(wg);
sp = abs(sp(1 : N));
sp = sp / max(sp);

figure(2)
semilogy(1 : N, sp)
xlim([0, N / 2])
ylim([1e-6, 1])
grid on

clear all;

Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post

11 страниц V  « < 8 9 10 11 >
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


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


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