Jump to content

    

bahurin

Участник
  • Content Count

    246
  • Joined

  • Last visited

Community Reputation

0 Обычный

About bahurin

  • Rank
    Местный
  • Birthday 11/28/1980

Контакты

  • Сайт
    http://www.dsplib.ru
  • ICQ
    0

Recent Profile Visitors

1440 profile views
  1. После ifft при обнуленной ФЧХ обязательно надо делать перестановку импульсной характеристики. Нельзя прямо сразу сверку с результатом ifft! Ещё желательно окошком после перестановки.
  2. Устойчивость ФАПЧ

    Не понял почему вы считаете приведенный пример неустойчивым? Вывел на печать параметры g1 и g2: g1 = 0.0319 g2 = 0.0010. Все в пределах зоны устойчивости. также не совсем ясно что вы подразумеваете под границами применимости конкретной данной ФАПЧ? Каждая следящая система должна проектироваться под конкретные параметры. Не всегда можно взять готовое решение и прикладывать для своей задачи. Так если тактовую поменяете, надо пересчитать петлевой фильтр (он должен стать более узкополосным чтобы соблюсти полосу захвата).
  3. Эта библиотека все умеет и fir и iir. Документация тут Я там правда не все задокументировал, но если что, пишите помогу.
  4. Можно ещё посоветовать посмотреть в сторону python. Octave практически повторяет синтаксис матлаба. Надо только нужные тулбоксы включать например load pkg signal
  5. a[0] = z[2]; a[3] = DSPL_FARROW_LAGRANGE_COEFF*(z[3] -z[0]) + 0.5*(z[1] - z[2]); a[1] = 0.5*(z[3] - z[1])-a[3]; a[2] = z[3] - z[2] -a[3]-a[1]; res = polyval(a, 3, &x, 1, (*y)+k); Если z обозначить как y то отличий ровно 0. Только приведённые обертки позволяют ещё сдвигать на дробное время и ресаэмплировать в произвольное отношение P/Q. Кроме того есть ещё реализация на кубических сплайнах, которая не требует коэффициента 1/6
  6. Если кому интересно есть Сишная реализация фарроу фильтров
  7. Цитата(thermit @ Jan 19 2017, 22:48) Именно так и нужно. Вот наглядный пример почему так делать не стоит.
  8. А почему при 16 битном представлении у вас максимальный к-т фильтра 2577? Что мешает усилием воли туда 32767 записать? Надо понять где точка в ваших к-тах и столько разрядов по выходу фильтра сделать раунд для корректного масштабирования
  9. Цитата(kumle @ Nov 14 2012, 13:20) Попробовал получилось так, но теперь непонятно почему если cos то фаза 0, а если sin то 90 Ведь все должно быть наоборот ??? Комплексная экспонента есть exp(-jwt) = cos(wt)-j*sin(wt). Фаза есть atan(imag(S)/real(S)) . Соответсвенно для косинуса получим фазу 0 или pi поскольку спектр будет чисто вещественным, а для синуса спектр будет чисто комплексным и фаза будет +-pi/2
  10. если резулатат вашего алгоритма Герцеля отличается от fft то значит где-то ошибка. Результат должен совпадать. Теперь по существу. Вот матлаб код для проверки. Берем 500 отсчетов синусоиды s = sin(2*pi*50*t/Fs) на частоте 50 Гц и рассчитываем 50-ый отсчет FFT используя алгоритм герцеля. Получаем фазу -90 градусов, поскольку фаза 0 будет если взять s = сos(2*pi*50*t/Fs). Если посмотрите спектр FFT, то нет эффекта растекания поскольку я взял 500 отсчетов. Если вы берете 512 отсчетов то эффект растекания будет и фаза изменится. При этом если посмотрите из примера разница между отсчетом FFT и герцелем ничтожно мала (1E-12). Так и должно быть поскольку алгоритм Герцеля и рассчитывает один отсчет FFT. Кодclear all; close all; clc; %% input data N = 500; t = 0:N-1; Fs = 500; k = 50; s = sin(2*pi*50*t/Fs); %% Goertzel algorithm W = exp(2i*pi*k/N); v = zeros(1,N); a = 2*cos(2*pi*k/N); v(1) = s(1); v(2) = s(2) + a*v(1); for n = 3:N     v(n) = s(n) + a*v(n-1) - v(n-2); end G = W*v(n) - v(n-1); %% fft S = fft(s); figure; plot(abs(S)) %% fprintf('разница между fft и Герцелем: %e\n', G - S(k+1)); fprintf('фаза: %.4f\n', angle(G)*180/pi); PS по поводу накопления ошибок поставьте в исходных данных Код%% input data N = 500000; t = 0:N-1; Fs = 500; k = 50000; и все равно ошибка будет на уровне 1E-6 при абсолютном значении спектра 1E6 (т.е. на 12 порядков ниже)
  11. Цитата(newfiz @ Nov 1 2012, 09:07) bahurin, если Вы эту странную матлабовскую картиночку называете спектром - где с очевидностью нет соответствия ни по периоду, ни по амплитуде - флаг Вам в руки. Я ничего не навязываю, если помните. Почему нет соотвествия по периоду? Частота сигнала 1 Гц палка на частоте 1 что не так? Амплитуда просто должна быть поделена на N если хотите получить честное значение 0.5. В скрипте 6 строчек с какой именно вы не согласны?
  12. Цитата(newfiz @ Oct 31 2012, 09:03) bahurin, я ничего не впариваю, а просто предлагаю - потому что есть чем поделиться. Так что смените тон, пожалуйста. Ссылка на статью, где описан алгоритм, дана в Описании. "спектр одного периода синусоиды есть одна палка а не как у вас там нарисовано" Это спектр бесконечной синусоиды есть одна палка. Я смотрю, Вы тоже крутейший специалист. По понтам. Открываем матлаб вставляем и запускаем скрипт: КодN = 64; t = (0:N-1)/N; s = sin(2*pi*t); subplot(211), stem(t,s), grid, title('один период синусоиды'); S = abs(fft(s)); subplot(212), stem(0:N-1,S), grid, title('спектр одного периода синусоиды'); смотрим график: [attachment=72422:______.png] Очевидно что на графике только одна палка S(1) все остальные равны нулю (надеюсь не надо объяснять что такое вторая палка). После этого извиняемся перестаем дерзить и идем допиливать свою программу до рабочего состояния или перестаем называть свою программу анализатором спектра поскольку к спектральному анализу она в своем текущем виде не имеет никакого отношения.
  13. Цитата(newfiz @ Oct 29 2012, 09:46) TSerg, "Не поленился, сгенерил чистый синус в один период и поимел вот такой спектр" Да, Вы получили честный спектр - проверьте другим спектроанализатором. Если не понимаете, что искать спектр по одному периоду - смешно. Вы бы ещё пол-периода прогнали, или четверть. Чтобы получить выраженный пик, нужно несколько периодов. Ваши дальнейшие примеры страдают тем же. Подучитесь, что ли. Неужели Вы думаете, что программа не тестировалась? Вы господа совершаете ошибку пытаясь впарить свое поделие на этом форуме. Тут знаете ли люди разбираются в цифровой обработке и ваша программа вызывает в лучшем случае улыбку. Идите премьер-министру это показывайте он любит всякие нанотехнологии. И да еще если уж вы и говорите что изобрели чудо-юдо алгоритм, то дайте ссылку где про него почитать. ЗЫ спектр одного периода синусоиды есть одна палка а не как у вас там нарисовано.
  14. Корекция АЧХ

    Цитата(ToR_TDA @ Sep 15 2011, 13:25) из-за малого числа допустимых коэффициентов и сложного характера АЧХ (на некоторых участках) это не увенчалось успехом. Я не уверен, что подход аппроксимации к желаемой АЧХ корректора применим здесь. Неравномерность, требуемая в полосе 8-128кГц, составляет ±0.1Дб в полосе 128-256кГц ±1Дб, подавление в полосе заграждения должно быть максимальное исходя из выполнения первых 2х условий. 1. Почему не увенчалось успехом? Не удалось сделать ifft в матлабе и умножить на окно? 2. Увеличивая длину фильтра и применяя окно Кайзера вы сможете добиться требуемых характеристик.
  15. Предел Шеннона задает какое отношение сигнал-шум необходимо, чтобы передать информацию со скоростью R по каналу с полосой W без ошибок. Вероятность ошибки приема символа в канале с полосой W и скоростью R зависит от многих факторов (в частности способа модуляции и кодирования), а не только от SNR. Поэтому используют зависимости BER от SNR для различных видов модуляции.