akrabad 0 23 декабря, 2015 Опубликовано 23 декабря, 2015 · Жалоба Что то делаете не так. На моей картинке видно что образ надёжно сидит в шумах. А сколько тапов у вашего корректирующего фильтра? Количество тапов = 1025. F1 - задерживающий фильтр. F2 - фильтр, полученный обратным преобразование фурье по необходимой АЧХ и ФЧХ + окно Ханна. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 23 декабря, 2015 Опубликовано 23 декабря, 2015 · Жалоба Количество тапов = 1025. F1 - задерживающий фильтр. F2 - фильтр, полученный обратным преобразование фурье по необходимой АЧХ и ФЧХ + окно Ханна. Офигеть! У меня всего 62 тапа. И никаких окон не нужно - они только мешают. А сколько точек FFT?А сколько точек IFFT? А сколько эталонных частот подавали для калибровки? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
akrabad 0 23 декабря, 2015 Опубликовано 23 декабря, 2015 (изменено) · Жалоба Офигеть! У меня всего 62 тапа. И никаких окон не нужно - они только мешают. А сколько точек FFT?А сколько точек IFFT? А сколько эталонных частот подавали для калибровки? Что вы подразумеваете под эталонными частотами? А для чего вы использовали FFT в алгоритме получения фильтра? Подал 14 частот на АЦП; По этим сигналам получил 14 значений для разностных АЧХ и ФЧХ для фильтра F2; Произвел интерполяцию; Получил 1025 значений АЧХ и ФЧХ(теперь буду меньше); Задал комплексный коэффициент передачи; Выполнил IFFT и получил 1025 значений фильтра. Изменено 23 декабря, 2015 пользователем akrabad Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 24 декабря, 2015 Опубликовано 24 декабря, 2015 · Жалоба Что вы подразумеваете под эталонными частотами? А для чего вы использовали FFT в алгоритме получения фильтра? 1.Подал 14 частот на АЦП; 2.По этим сигналам получил 14 значений для разностных АЧХ и ФЧХ для фильтра F2; 3.Произвел интерполяцию; 4.Получил 1025 значений АЧХ и ФЧХ(теперь буду меньше); 5.Задал комплексный коэффициент передачи; 6.Выполнил IFFT и получил 1025 значений фильтра. Я не так делал. 1. Подаю 30 частот,можно не все сразу,а по одному сигналу. Частоты считаю так: fs=550;%Fs one ADC Nfreq = 32; Nfft = Nfreq-1; TableFreq = fs*(1:Nfft-1)/Nfft; 2). Выполняю FFT размерностью Nfft для каждого АЦП.Результат G1 и G2. 3). Считаю результирующий фильтр и добавляю значения нулевой частоты и fs F0(i) = conj(G1(ind)) ./ conj(G2(ind)); F0 = [1.04 F0 1.008];%% 4). Преобразую результат N = length(F0); nF0 = [F0(1:N) conj(F0(N-1:-1:2))].'; nF0([1 N]) = real(nF0([1 N])); 5). Выполняю IFFT размерностью 62 точки 6). Нормирую полученную ИХ. 7). Прошиваю в FPGA и любуюсь результатом. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
akrabad 0 12 января, 2016 Опубликовано 12 января, 2016 (изменено) · Жалоба 2). Выполняю FFT размерностью Nfft для каждого АЦП.Результат G1 и G2. 3). Считаю результирующий фильтр и добавляю значения нулевой частоты и fs Я получаю G1 и G2 вот так for iter = 1:1:Nfreq-2 %Цикл по всем сигналам Temp = fft(ch_1, Nfft); %fft первой АЦП G1(iter) = Temp(iter+1); %G1 - 1x34 % Temp - 1x35 Temp = fft(ch_2, Nfft); %fft второй АЦП G2(iter) = Temp(iter+1); end F0 = conj(G1) ./ conj(G2);% По формуле нам надо только(-ws/2 + w) Правильно ли? 6). Нормирую полученную ИХ.Под нормированием вы подразумеваете только приведение суммы коэфф. к 1? После ifft ИХ выглядит так. "Сдвигали" ли вы ее? Изменено 12 января, 2016 пользователем akrabad Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_sda 0 13 января, 2016 Опубликовано 13 января, 2016 · Жалоба Я получаю G1 и G2 вот так for iter = 1:1:Nfreq-2 %Цикл по всем сигналам Temp = fft(ch_1, Nfft); %fft первой АЦП G1(iter) = Temp(iter+1); %G1 - 1x34 % Temp - 1x35 Temp = fft(ch_2, Nfft); %fft второй АЦП G2(iter) = Temp(iter+1); end F0 = conj(G1) ./ conj(G2);% По формуле нам надо только(-ws/2 + w) Правильно ли? Под нормированием вы подразумеваете только приведение суммы коэфф. к 1? После ifft ИХ выглядит так. "Сдвигали" ли вы ее? 1).Я получаю G1 и G2 вот так for i=1:Nfft-1 NumBin = i+1; sp = fft(squeeze(sg(1,i,:)))/(Nfft/2); G1(i) = sp(NumBin); sp = fft(squeeze(sg(2,i,:)))/(Nfft/2); stem(abs(sp)); m = abs(sp(NumBin)); a = angle(sp(NumBin)) - pi*TableFreq(i)/fs; G2(i) = m.*exp(1i*a); end; Тактовый сигнал для второго АЦП сдвинут на pi, это нужно учесть. 2). Как считается F0 я приводил. 3). Да 4). Конечно сдвигал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 16 ноября, 2016 Опубликовано 16 ноября, 2016 · Жалоба Читаю эту тему. Всплыло несколько вопросов. 1. Фильтры, что здесь обсуждаются, корректируют смещение выходов АЦП одного относительно другого? Например, постоянно один АЦП выдает значения на несколько единиц меньше другого. Если фильтр FIR умножает выборки на коэффициенты, как он сможет добавить постоянное число? 2. Аналогичный вопрос по коррекции сдвига между АЦП. Если они работают не строго в противофазе, это скорректируется? 3. Если АЧХ фильтра есть ДПФ от импульсной характеристики, то почему сразу не вычислить коэффициенты фильтра, подав на входы АЦП импульс? Дальше, почему именно импульс, а не перепад? Все равно потом вычисляется отношение частотных характеристик. То есть, подал перепад, вычислил спектры, поделил. Вычислил ОДПФ, получил коэффициенты корректирующего фильтра. 4. Если у меня полоса АЦП в несколько раз больше полосы сигнала, и АЧХ в интересующем меня диапазоне, можно считать, идентичная, может, мне ограничиться тремя величинами: смещением, коэффициентом передачи, временнЫм сдвигом? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться