|
Увеличение разрешения по частоте, засчёт накопления |
|
|
|
 |
Ответов
|
Aug 4 2008, 20:06
|
Знающий
   
Группа: Участник
Сообщений: 609
Регистрация: 3-03-07
Из: San Jose
Пользователь №: 25 837

|
Цитата(EKirshin @ Jul 30 2008, 18:01)  Вопрос: можно ли, имея M кусков этого сигнала использовать их для получения спектра сигнала размерностью M*N? Я думаю что это не реализуемо. Метод, который предлагает Stanislav - подкручивание фазы основной составляющей, будет работать (возможно, не уверен) только для составляющих коррелированных с основной гармоникой. Для всех прочих он работать не будет, т.к. они будут складываться с произвольными фазами. Если есть возможность получать время начала каждой пачки с точностью до отсчёта, то можно вставить пустые (забитые нулями) промежутки и расфильтровать суммарную выборку. На каждый из этих "N" кусков наложить окно перед склейкой. Если же время начала получить невозможно, то можно лишь слегка улучшить разрешение если до БПФ вычесть из сигнала основную составляющую и фильтровать через БПФ только остаток. Такой метод применяется при аналоговых измерениях чистоты спектра. Преимуществом при этом будет возможность применения более узкополосного окна или БПФ без окна вообще. Если есть априорная информация об измеряемых составлящих - как правило это гармоники сети и частоты сравнения в синтезаторах, то можно ещё попытаться улучшить измерение, но не БПФом.
--------------------
|
|
|
|
|
Aug 4 2008, 22:36
|

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

|
Цитата(alexkok @ Aug 5 2008, 00:06)  Я думаю что это не реализуемо. Метод, который предлагает Stanislav - подкручивание фазы основной составляющей, будет работать (возможно, не уверен) только для составляющих коррелированных с основной гармоникой... Это основное ограничение, никуда не деться. Однако, остальное можно и нужно считать шумом, а как мы выяснили, он эргодичен. Кроме того, коррекция разбежки фаз основного и других тонов в предложенной программе не реализована - значит, при достаточно больших интервалах, коррелированность будет потеряна. С подкруткой фазы разберусь после - уж больно она заманчива для комплексного сигнала, имеющегося в распоряжении EKrishin. Нужно сделать корр. фильтр, который в интересующей полосе будет подкручивать фазу пропорционально частоте. Сейчас попытаюсь предложить метод "временнОй" склейки. Суть та же - по изменению фазы основного колебания судить о временнОм сдвиге, а затем компенисировать его. Сделано пока что не слишком аккуратно, но результат получается лучше, чем при разворачивании фаз всего сигнала на один и тот же угол. Код function phase_adj() fsampl = 1000; % частота дискретизации, кГц freq = 41; % Частота гармонического тона, кГц len_buf = 4096; % длина буфера, отсчёты gap = 0.35; % интервал между кусками, мс, не более 8 ss_fact = 5; % количество точек модели сигнала на 1 выборку АЦП
% Формируем опорную сетку для "реального" сигнала tick = ss_fact*len_buf;
% Формируем модель "реального" сигнала с разрешением бОльшим, чем выборка АЦП % (коряво: можно получить куски и аналитически, но это для сравнения спектров) signal = sin(2*pi*(0:4*tick)*freq/(ss_fact*fsampl)) + (1e-2)*randn(1, 4*tick+1) +... 0.02*sin(2*pi*(0:4*tick)*(freq+0.5)/(ss_fact*fsampl)) +... 0.02*sin(2*pi*(0:4*tick)*(freq-0.5)/(ss_fact*fsampl));
% Заполняем буферы buffer_1 = signal(1:ss_fact:tick); sampl_gap = floor(1e6*ss_fact*gap/fsampl); buffer_2 = signal(tick+1+sampl_gap:ss_fact:tick+sampl_gap+tick);
% Пытаемся склеить без учёта фазовых соотношений sum_buf_1 = [buffer_1, buffer_2];
% Делаем оценку спектров кусков и "реального" сигнала, используя спектральные окна specw_1 = fft(chebwin(len_buf, 60)'.*buffer_1); specw_2 = fft(chebwin(len_buf, 60)'.*buffer_2); sp_sig = fft(chebwin(2*len_buf, 60)'.*signal(1:ss_fact:2*tick));
% Находим положение максимума модуля спектральной функции [max_1, frq_1] = max(abs(specw_1));
% Находим фазы основного тона в кусках ang_1 = angle(specw_1(frq_1)); ang_2 = angle(specw_2(frq_1));
% Находим разность фаз с учётом набега за кусок diff = ang_1-ang_2; dif_ang = mod(diff+2*pi*len_buf*freq/fsampl, 2*pi);
% Находим временнУю задержку, соответствующую разности фаз tau = dif_ang/(2*pi*freq);
% Находим величину сдвига в отсчётах сигнала shift = round(tau*fsampl);
% Сдвигаем 2-й кусок для слияния фаз tmp_buff = buffer_2(shift+1:end); % весьма грубо, но пока что сойдёт
% Kоличество отсчётов на период (грубо) period = round(fsampl/freq);
% Дописываем "хвост" tmp_buff = [tmp_buff, tmp_buff(end-period+1:end-period+shift)]; % пуркуа бы и не па?
% Склеиваем sum_buf_2 = [buffer_1, tmp_buff];
% Находим модуль спектра склейки sp_sum_2 = fft(chebwin(2*len_buf, 60)'.*sum_buf_2);
% Выводим результаты bins = (0:len_buf-1)*fsampl/len_buf;
figure (1) plot (1:100, buffer_1(1:100)) hold on plot (1:100, buffer_2(1:100), 'r') hold off ylim([-1.5 1.5]); grid on title ('Signals')
figure (2) plot ((4046:4146), sum_buf_1(4046:4146)) ylim([-1.5 1.5]); grid on title ('Glue 1')
figure (3) plot ((4046:4146), sum_buf_2(4046:4146), 'Color', [0.9 0 0]) ylim([-1.5 1.5]); grid on title ('Glue 2')
figure (4) semilogy (bins(1:1000), abs(specw_1(1:1000))) ylim([0.1 1000]); grid on xlabel('Frequency, Hz') title('Spectrum of short sequence')
figure (5) semilogy (bins(1:1000)/2, abs(sp_sig(1:1000)), 'b') hold on semilogy (bins(1:1000)/2, abs(sp_sum_2(1:1000)), 'r') hold off ylim([0.1 1000]); grid on xlabel('Frequency, Hz') legend('Real signal', 'Adjusted pieces') title('Spectra of long sequences') return; Пояснение: сначала формируется сигнал с временнЫм разрешением 1/5 относительно частоты выборки (имитация "непрерывнрсти"), а затем из него формируются исходные последовательности, с учётом задержки между блоками (gap). Стыковка производится с точностью в +/- 0,5 длины отсчёта. Повысить её можно путём интерполяции. Цитата(alexkok @ Aug 5 2008, 00:06)  ...Для всех прочих он работать не будет, т.к. они будут складываться с произвольными фазами. Если есть возможность получать время начала каждой пачки с точностью до отсчёта, то можно вставить пустые (забитые нулями) промежутки и расфильтровать суммарную выборку... Мне кажется, что измерять временнОй интервал с точностью до фазы основной гармоники вовсе и не нужно - требуется лишь получить погрешность не более ~ 1/(2*F ), где F - ширина интересующего диапазона. Небольшие нестыковки фаз компонентов сигнала на результат качественно не повлияют; будет только небольшая неопределённость амплитуд и частот спектральных составляющих. Но разрешение как таковое будет увеличено кардинально. Цитата(alexkok @ Aug 5 2008, 00:06)  ...Если же время начала получить невозможно, то можно лишь слегка улучшить разрешение если до БПФ вычесть из сигнала основную составляющую и фильтровать через БПФ только остаток. Такой метод применяется при аналоговых измерениях чистоты спектра. Преимуществом при этом будет возможность применения более узкополосного окна или БПФ без окна вообще... Да, это верно, но всё-таки не принципиально. Для подобных измерений подавление тестового сигнала обячно делается из-за недостаточной разрешающей способности аппаратуры по уровню (или, более правильно, недостаточного динамического диапазона). Имея в распоряжении, скажем, АЦП со 120-130 дБ ДД, подавлять основную частоту, скорее всего, и не потребуется. А при узкополосной фильтрации кусок сигнала просто "развалится" по причине большой добротности фильтра, и никакого выигрыша, скорее всего, не получится... Цитата(alexkok @ Aug 5 2008, 00:06)  ...Если есть априорная информация об измеряемых составлящих - как правило это гармоники сети и частоты сравнения в синтезаторах, то можно ещё попытаться улучшить измерение, но не БПФом. Совершенно верно, я об этом тоже думал. Если сигнал имеет какие-либо устойчивые артефакты помимо основного тона, делу разрешения неодозначностей это может сильно помочь, и даже без измерения интервала времени вообще - экстремальный подход к проблеме. Однако, они должны лежать заметно выше шумового фона. Более того, уместно было бы ещё хотя б один пилотный тон известной частоты во входной сигнал добавить. Я бы, пожалуй, выбрал эту частоту в районе 100-500Гц. Однако, и простейший счётчик интервалов времени, думается, работать будет очень хорошо. Попробую ввести в модель пожже. Собственно, ПФ не является чем-то необходимым. Требуемые преобразования можно осуществить целиком и во временнОй области (методами регрессии, например), которые ничем не хуже ДПФ. Вот картинки. Хорошо видно, что боковые лепестки (+/- 0,5 кГц) в склейке разрешаются так же хорошо, как и в исходном сигнале, при условии, что последний анализируется на двойной длине куска. В то время, как на куске одинарной длины "боковушки" не разрешаются вообще. Алгоритм работает практически с любыми настройками, но, ввиду грубости стыковки кусков, частоту "высокой" делать не стОит.
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
|
Aug 5 2008, 01:05
|
Знающий
   
Группа: Участник
Сообщений: 609
Регистрация: 3-03-07
Из: San Jose
Пользователь №: 25 837

|
Цитата(Stanislav @ Aug 5 2008, 01:36)  Это основное ограничение, никуда не деться. Однако, остальное можно и нужно считать шумом, а как мы выяснили, он эргодичен.  Повышать разрешение для шума бессмыссленно, можно просто пересчитать к другой полосе. Разрешение нужно чтобы вытащить из под шума паразитные составляющие спектра. Если их "размазать" несинфазным сложением то использование нескольких пачек теряет смысл. Цитата Но разрешение как таковое будет увеличено кардинально. Разрешение для каких составляющих? Для основной гармоники оно не нужно, а паразитные уже размазаны. Цитата Да, это верно, но всё-таки не принципиально. Для подобных измерений подавление тестового сигнала обячно делается из-за недостаточной разрешающей способности аппаратуры по уровню (или, более правильно, недостаточного динамического диапазона). Имея в распоряжении, скажем, АЦП со 120-130 дБ ДД, подавлять основную частоту, скорее всего, и не потребуется. А при узкополосной фильтрации кусок сигнала просто "развалится" по причине большой добротности фильтра, и никакого выигрыша, скорее всего, не получится... При ДД 120-130дБ нужно использовать окно с соответствующим уровнем боковиков, а это означает расширение полосы фильтров БПФ где-то в два раза по сравнению с БПФ без окна но с высоким уровнем боковиков. Если сжать ДД за счёт вычитания главной гармоники, можно использовать окно с относительно высоким уровнем боковиков но более узкополосное и получить более высокое разрешение.
--------------------
|
|
|
|
|
Aug 5 2008, 06:51
|

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

|
Цитата(alexkok @ Aug 5 2008, 05:05)  Повышать разрешение для шума бессмыссленно, можно просто пересчитать к другой полосе. Разрешение нужно чтобы вытащить из под шума паразитные составляющие спектра... Совершенно так. Мне тоже это подумалось с самого начала темы. Например, паразитные моды колебаний кварца, или спуры синтезатора частоты. Цитата(alexkok @ Aug 5 2008, 05:05)  ...Если их "размазать" несинфазным сложением то использование нескольких пачек теряет смысл. Конечно. Поэтому и "тужимся". Цитата(alexkok @ Aug 5 2008, 05:05)  ...Разрешение для каких составляющих? Для основной гармоники оно не нужно, а паразитные уже размазаны. Как это размазаны? Посмотрите на картинки - где же Вы видите "размазню"? Кроме того, как я и писал уже, для одиночного тона понятие разрешения не имеет смысла. Цитата(alexkok @ Aug 5 2008, 05:05)  ...При ДД 120-130дБ нужно использовать окно с соответствующим уровнем боковиков, а это означает расширение полосы фильтров БПФ где-то в два раза по сравнению с БПФ без окна но с высоким уровнем боковиков. Если сжать ДД за счёт вычитания главной гармоники, можно использовать окно с относительно высоким уровнем боковиков но более узкополосное и получить более высокое разрешение. Ага, понятно. Действительно, для относительно коротких окон вычитание основной частоты будет полезным - исчезнет эффект "маскирования" слабых составляющих спектра мощным основным тоном. Здесь, видимо, такой фокус тоже можно проделать, после склейки уже. Разрешение как по уровню, так и по частоте вблизи основного тона это должно увеличить. ЗЫ. Сегодня вечером попробую поработать с реальным сигналом из файлов. Однако, там засада - интервал даже приблизительно не известен. ЗЗЫ. Кстати, БПФ вообще без окна не бывает...
--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
|
|
|
|
Сообщений в этой теме
EKirshin Увеличение разрешения по частоте Jul 30 2008, 15:01 GetSmart А повысить разрешение методом интерполяции не кати... Jul 30 2008, 15:56 Stanislav Цитата(EKirshin @ Jul 30 2008, 19:01) Ест... Jul 30 2008, 16:43 GetSmart Цитата(Stanislav @ Jul 30 2008, 22:43) Сп... Aug 1 2008, 08:56 GetSmart Цитата(Stanislav)Скажите, каким образом интерполяц... Jul 30 2008, 17:17 fontp Цитата(GetSmart @ Jul 30 2008, 21:17) fon... Jul 30 2008, 17:57 Stanislav Цитата(GetSmart @ Jul 30 2008, 21:17) fon... Jul 30 2008, 18:18  fontp Цитата(Stanislav @ Jul 30 2008, 22:18) По... Jul 30 2008, 18:27   Stanislav Цитата(fontp @ Jul 30 2008, 22:27) Отчаст... Jul 30 2008, 18:49    fontp Цитата(Stanislav @ Jul 30 2008, 22:49) ЗЫ... Jul 31 2008, 07:26     GetSmart Цитата(fontp @ Jul 31 2008, 13:26) Когере... Jul 31 2008, 08:01      fontp Цитата(GetSmart @ Jul 31 2008, 12:01) Как... Jul 31 2008, 08:19     Stanislav Цитата(fontp @ Jul 31 2008, 11:26) Запрос... Jul 31 2008, 09:05      fontp Цитата(Stanislav @ Jul 31 2008, 13:05) За... Jul 31 2008, 09:15       Stanislav Цитата(fontp @ Jul 31 2008, 13:15) Если к... Jul 31 2008, 09:31        fontp Цитата(Stanislav @ Jul 31 2008, 13:31) Те... Jul 31 2008, 09:33    EKirshin Цитата(Stanislav @ Jul 30 2008, 22:49) От... Jul 31 2008, 16:14     shf_05 Цитата(EKirshin @ Jul 31 2008, 22:14) Про... Aug 1 2008, 07:07      fontp Цитата(shf_05 @ Aug 1 2008, 11:07) я бы д... Aug 1 2008, 08:56      EKirshin Цитата(shf_05 @ Aug 1 2008, 11:07) так ли... Aug 1 2008, 09:44       fontp Цитата(EKirshin @ Aug 1 2008, 13:44) Нет,... Aug 1 2008, 09:51     fontp Цитата(EKirshin @ Jul 31 2008, 20:14) Про... Aug 1 2008, 07:07     Stanislav Цитата(EKirshin @ Jul 31 2008, 20:14) ...... Aug 1 2008, 08:31      blackfin Цитата(Stanislav @ Aug 1 2008, 12:31) Вы ... Aug 1 2008, 08:56       Stanislav Цитата(blackfin @ Aug 1 2008, 12:56) А чт... Aug 1 2008, 10:00        fontp Цитата(Stanislav @ Aug 1 2008, 14:00) Пот... Aug 1 2008, 10:03 GetSmart Цитата(Stanislav)Пожалуй, в 1001-й раз приводить е... Jul 30 2008, 18:59 Stanislav Цитата(GetSmart @ Jul 30 2008, 22:59) Ну ... Jul 30 2008, 19:18 GetSmart fontp, согласитесь, что неограниченное увеличение ... Jul 31 2008, 08:42 fontp Цитата(GetSmart @ Jul 31 2008, 12:42) fon... Jul 31 2008, 08:53  GetSmart Цитата(fontp @ Jul 31 2008, 14:53) Теорет... Jul 31 2008, 09:05   fontp Цитата(GetSmart @ Jul 31 2008, 13:05) Вы ... Jul 31 2008, 09:25  Stanislav Цитата(fontp @ Jul 31 2008, 12:53) Теорет... Jul 31 2008, 09:23 RadioJunior а у меня более банальный вопрос: а как вообще оцен... Jul 31 2008, 09:34 fontp Цитата(RadioJunior @ Jul 31 2008, 13:34) ... Jul 31 2008, 10:02 GetSmart Цитата(fontp)А разрешение здесь не при чём. Маклау... Jul 31 2008, 10:40 fontp Цитата(GetSmart @ Jul 31 2008, 14:40) Хва... Jul 31 2008, 10:51 729 Цитата(GetSmart @ Jul 31 2008, 14:40) Есл... Jul 31 2008, 10:58 GetSmart Цитата(fontp)Можете сказать, что это не ДПФ. Может... Jul 31 2008, 11:44 729 Цитата(GetSmart @ Jul 31 2008, 15:44) Во-... Jul 31 2008, 11:57 fontp Цитата(GetSmart @ Jul 31 2008, 15:44) При... Jul 31 2008, 11:59 GetSmart Цитата(fontp)Кстати так и делают во многих приложе... Jul 31 2008, 12:09 729 Цитата(GetSmart @ Jul 31 2008, 16:09) Доп... Jul 31 2008, 12:22 fontp Цитата(GetSmart @ Jul 31 2008, 16:09) Ког... Jul 31 2008, 12:29  AndrewN Цитата(fontp @ Jul 31 2008, 15:29) Так ра... Jul 31 2008, 12:38   blackfin Цитата(AndrewN @ Jul 31 2008, 16:38) Гм. ... Jul 31 2008, 12:42   fontp Цитата(AndrewN @ Jul 31 2008, 16:38) Гм. ... Jul 31 2008, 12:44 GetSmart Цитата(729)Непонятно. Сами частоты (6 штук) можете... Jul 31 2008, 12:25 729 Цитата(GetSmart @ Jul 31 2008, 16:25) 99.... Jul 31 2008, 13:13  GetSmart Цитата(729 @ Jul 31 2008, 19:13) Да, но п... Jul 31 2008, 13:18   729 Цитата(GetSmart @ Jul 31 2008, 17:18) Сме... Jul 31 2008, 13:22    GetSmart Цитата(729 @ Jul 31 2008, 19:22) А вот из... Jul 31 2008, 13:34     729 Цитата(GetSmart @ Jul 31 2008, 17:34) Поч... Jul 31 2008, 13:50 GetSmart Цитата(fontp)Фома Вы не верующий. Так работают все... Jul 31 2008, 12:40 Stanislav Цитата(fontp @ Aug 1 2008, 12:56) Если ра... Aug 1 2008, 10:16 fontp Цитата(Stanislav @ Aug 1 2008, 14:16) Пра... Aug 1 2008, 10:20  Stanislav Цитата(fontp @ Aug 1 2008, 14:20) Вот Вы ... Aug 1 2008, 10:24   fontp Цитата(Stanislav @ Aug 1 2008, 14:24) Пос... Aug 1 2008, 10:30 EKirshin Цитата(Stanislav @ Aug 1 2008, 12:31) Пон... Aug 1 2008, 10:39 729 Цитата(EKirshin @ Aug 1 2008, 14:39) Част... Aug 1 2008, 11:07 GetSmart Цитата(EKirshin @ Aug 1 2008, 16:39) Соот... Aug 1 2008, 11:17  729 Цитата(GetSmart @ Aug 1 2008, 15:17) Чем ... Aug 1 2008, 11:24 Stanislav Цитата(EKirshin @ Aug 1 2008, 14:39) Част... Aug 1 2008, 12:09  GetSmart Цитата(Stanislav @ Aug 1 2008, 18:09) Кто... Aug 1 2008, 13:19   Stanislav Цитата(GetSmart @ Aug 1 2008, 17:19) Stan... Aug 1 2008, 14:27    GetSmart Цитата(Stanislav @ Aug 1 2008, 20:27) Это... Aug 1 2008, 15:26     729 Цитата(GetSmart @ Aug 1 2008, 19:26) Вы и... Aug 1 2008, 15:42  blackfin Цитата(Stanislav @ Aug 1 2008, 16:09) Сей... Aug 1 2008, 14:57   Stanislav Цитата(blackfin @ Aug 1 2008, 18:57) Мы ж... Aug 1 2008, 19:11    shasik Я, конечно, дико извиняюсь, что без стука
Почитайт... Aug 1 2008, 19:19 EKirshin Цитата(GetSmart @ Aug 1 2008, 15:17) Чем ... Aug 1 2008, 15:25 alex_os Цитата(EKirshin @ Aug 1 2008, 19:25) Испо... Aug 1 2008, 17:42  729 Цитата(alex_os @ Aug 1 2008, 21:42) Дык е... Aug 1 2008, 17:55   alex_os [quote name='729' date='Aug 1 2008, 21... Aug 1 2008, 18:36   Stanislav Цитата(729 @ Aug 1 2008, 21:55) Фазировка... Aug 3 2008, 07:28  Stanislav Цитата(alex_os @ Aug 1 2008, 21:42) Дык е... Aug 1 2008, 19:23   alex_os Цитата(Stanislav @ Aug 1 2008, 23:23) А к... Aug 1 2008, 19:32    Stanislav Цитата(alex_os @ Aug 1 2008, 23:32) Дык я... Aug 1 2008, 19:37 729 Цитата(EKirshin @ Aug 1 2008, 19:25) Испо... Aug 2 2008, 20:36 makc За грубость и оффтопик трое участников уже получи... Aug 1 2008, 15:55 Stanislav Вот обещанная "рыба".Кодfunction phase_a... Aug 2 2008, 00:00 fontp Цитата(Stanislav @ Aug 2 2008, 04:00) - ... Aug 2 2008, 09:01  GetSmart Цитата(fontp @ Aug 2 2008, 15:01) " ... Aug 2 2008, 10:01  Stanislav Цитата(fontp @ Aug 2 2008, 13:01) Маклауд... Aug 2 2008, 15:15   alex_os Цитата- модуль спектра последовательности двойной ... Aug 2 2008, 17:17    Stanislav Цитата(alex_os @ Aug 2 2008, 21:17) Фаза ... Aug 2 2008, 17:31     alex_os Цитата(Stanislav @ Aug 2 2008, 21:31) Это... Aug 2 2008, 17:41      Stanislav Цитата(alex_os @ Aug 2 2008, 21:41) А отк... Aug 2 2008, 17:45   fontp Цитата(Stanislav @ Aug 2 2008, 19:15) Стр... Aug 3 2008, 08:09    Stanislav Цитата(fontp @ Aug 3 2008, 12:09) Слишком... Aug 3 2008, 17:29     GetSmart Цитата(Stanislav @ Aug 3 2008, 23:29) - ... Aug 4 2008, 07:42 Stanislav Вот, немного поправил программу, и подбавил аддити... Aug 3 2008, 07:03 EKirshin Цитата(Stanislav @ Aug 1 2008, 23:37) 2 E... Aug 3 2008, 07:10 alexkok Цитата(EKirshin @ Aug 3 2008, 10:10) Да, ... Aug 5 2008, 16:35 alex_os Сделал модельку аналогичную модели Stanislav'а... Aug 4 2008, 11:40 Stanislav С комплексным сигналом работать проще - гильберта ... Aug 4 2008, 11:48
2 страниц
1 2 >
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|