

Pavel Proskura
Участник-
Content Count
154 -
Joined
-
Last visited
-
Дробный интерполятор в Matlab
Pavel Proskura replied to Pavel Proskura's topic in Вопросы системного уровня проектирования
Дробный интерполятор - это интерполирующий КИХ-фильтр. Особенность его заключается в том, что коэфф. преобразования частоты дискретизации - есть дробное число. Как пример из аудио, часто нужно передискретизировать сигнал из 44.1 кГц в 48 кГц. В общем применяется там, где нужно преобразовать частоту дискретизации в нецелое число раз. -
Дробный интерполятор в Matlab
Pavel Proskura replied to Pavel Proskura's topic in Вопросы системного уровня проектирования
Да, спасибо вроде бы разобрался. Остался непонятым только момент с каскадами, ведь действительно с точки зрения математики разницы быть не должно. Однако в том варианте как я делал для целочисленного преобразования, дробный вариант никак не хочет работать. Возможно его не поддерживает функция cascade. Хотя в Simulink данная конструкция работает вполне нормально. Из какой же позвольте узнать? Первоначально мой вопрос и звучал таким образом, что как я полагал fvtool не может отрисовать многокаскадный дробный интерполятор/дециматор. И я хотел получить ответ, как мне построить несколько АЧХ вкл. результирующую, и картинку привел как мне нужно чтобы все это выглядело. Следуя Вашим советам у меня не получалось добиться нужного мне результата. Я пытался уточнить как правильно сделать, но вместо этого получал ответы что никакой проблемы нет. А подобного рода скрипт для человека владеющего matlab накидать дело 2-3 мин. Но здесь я с Вами полностью согласен, что писать скрипты никто не обязан, хотя писать по большому счету для того примера который я привел, особо ничего и не надо. Извините что по беспокоил своей ерундой столь занятого человека. -
Дробный интерполятор в Matlab
Pavel Proskura replied to Pavel Proskura's topic in Вопросы системного уровня проектирования
Добрый вечер. Вот я вроде бы попросил постом выше построить в качестве примера тривиальную казалось бы вещь. Двух каскадный интерполятор. При этом отрисовать АЧХ мне требовалось как на картинке которую приводил я. Вместо этого мне второй день заявляют что проблемы никакой нет. Только вот АЧХ в том виде в котором я просил, так никто и не отрисовал. dcs привел скрипт аналогичный моему. Вот попробуйте поставить туда не кратные значения преобразования частоты дискретизации и запустить fvtools или freqz. А после скажите, есть проблема или ее нет. А также есть разница с точки зрения алгоритма matlab между целочисленными и дробными коэффициентами. Извините но график который Вы привели меня не устраивает. Даже ошибку привел которая вылетает Error using mfilt.cascade/validateratechangefactors (line 64)Analysis of multistage-multirate filters in which interpolators follow fractionalrate converters or decimators is not supported. А теперь внимание второй вопрос, если разницы между дробными и целыми коэфф. никакой нет, то какого хрена для дробных значений matlab АЧХ отрисовать не может? Вот и мне этот момент не понятен??? -
Дробный интерполятор в Matlab
Pavel Proskura replied to Pavel Proskura's topic in Вопросы системного уровня проектирования
Спасибо за ответ. Но увы данная конструкция будет работать только с целочисленными коэфф. преобразования. Т.е. 2 4 8. Я спрашивал про дробные значения. -
Дробный интерполятор в Matlab
Pavel Proskura replied to Pavel Proskura's topic in Вопросы системного уровня проектирования
Хорошо. Если это так тривиально, а скорее всего так оно и есть, и я действительно что то затупил, то у Вас на построение графика много времени уйти не должно мин.3-5. Постройте пожалуйста график АЧХ для двух каскадного интерполятора скажем со следующими коэфф. интерполяции первый 7/5 второй 4. На графике должны быть АЧХ каскадов и результирующая АЧХ. Полоса пропускания и неравномерность могут быть любыми - не суть. Буду очень признателен если поделитесь скриптом. Заранее спасибо. -
Дробный интерполятор в Matlab
Pavel Proskura replied to Pavel Proskura's topic in Вопросы системного уровня проектирования
Дык, это то понятно. Вопрос в другом, как построить эти АЧХ по каскадно и результирующую, на одном графике. Но при этом, чтобы АЧХ отдельных фильтров были нормированы каждый на свою частоту дискретизации? См. картинку которую я привел. Там ресемплер трехкаскадный, но целочисленный. Не догоняю я, как тоже самое отрисовать для дробных значений. Может есть примеры скрипта именно для отрисовки? -
Дробный интерполятор в Matlab
Pavel Proskura replied to Pavel Proskura's topic in Вопросы системного уровня проектирования
Что-то я совсем запутался. Допустим я воспользовался функцией resample для пересчета ИХ какого-либо из каскадов (не последнего). Строю АЧХ. Но АЧХ я получаю в масштабе нормированном на pi rad/sample. Т. о. я не смогу увидеть АЧХ каждого отдельно взятого каскада, и сравнить их между собой на одном графике. Мне же нужно чтобы они отображались, не как отдельно взятые фильтры нормированные на одну частоту дискретизации, а именно как фильтры нормированные каждый на свою частоту дискретизации, но при этом отрисованные в масштабе Fs/2, где Fs - частота дискретизации последнего каскада. Пример картинки как нужно приведен ниже. Не ужели в matlab нет готовой функции построения АЧХ дробного интерполятора/дециматора, в виде нескольких каскадов КИХ-фильтров? untitled.bmp -
Дробный интерполятор в Matlab
Pavel Proskura replied to Pavel Proskura's topic in Вопросы системного уровня проектирования
Попробовал использовать freqz. Все равно ругается: Error using mfilt.cascade/validateratechangefactors (line 64) Analysis of multistage-multirate filters in which interpolators follow fractional rate converters or decimators is not supported. Как это правильно сделать в MATLAB? Ведь если я правильно понял то, что Вы пытаетесь донести до меня, то алгоритм следующий. 1)Построить импульсные х-ки каждого каскада для своей частоты дискретизации. 2)Пересчитать ИХ для самой высокой частоты дискретизации (последний каскад интерполятора). 3)Свернуть полученные ИХ между собой (получить результирующую ИХ), для конечной частоты дискретизации. 4) воспользоваться функцией freqz. Мне не понятно как в MATLAB сделать пункт 2. -
Дробный интерполятор в Matlab
Pavel Proskura replied to Pavel Proskura's topic in Вопросы системного уровня проектирования
А как нужно учитывать разные тактовые при свертке ИХ-каскадов? В FVTool я делал так f = fvtool(hRRC, hFIR2, hFIR3, FC, 'Fs',[Fs_RRC, Fs, Fs2, Fs2]). Если бы Вы смогли привести пример или ссылку на пример, был бы Вам очень признателен. -
Дробный интерполятор в Matlab
Pavel Proskura posted a topic in Вопросы системного уровня проектирования
Добрый день. Вопрос к знатокам MATLAB. Как в MATLAB построить результирующую АЧХ дробного интерполятора, состоящего из нескольких каскадов? FVTool как я понимаю такую опцию не поддерживает. Может быть есть какие-то альтернативные варианты или инструменты применительно к MATLAB? Заранее спасибо. -
Matlab hdl coder
Pavel Proskura replied to Kostochkin's topic in Вопросы системного уровня проектирования
Не генерируются в модуле матлаба/simulink или не генерируются в VHDL-файле? Если Вы их не видите как порты модуля MATLAB, то это нормально, а вот если они отсутствуют в файле VHDL, тогда это странно. -
Литература по FFT со скользящим окном (поиск).
Pavel Proskura replied to JohnKorsh's topic in Алгоритмы ЦОС (DSP)
Добрый день. Там в конце 13 главы, есть ссылка на литературу позиции 47 и 48. Может быть в статьях более подробно раскрыта математика. Удачи. -
Литература по FFT со скользящим окном (поиск).
Pavel Proskura replied to JohnKorsh's topic in Алгоритмы ЦОС (DSP)
Ричард Лайонс. ЦОС. Раздел 13.18. Скользящее ДПФ. Книгу скинул на Вашу почту. -
Вычисление несущей для APSK?
Pavel Proskura replied to Leshii's topic in Алгоритмы ЦОС (DSP)
Да, классический Гарднер. При расcтройке несущей ~ 5 МГц, используется два синхронизатора с начальными смещениями несущей +/- 2.5 МГц, какой контур первее войдет в режим захвата по тому и работают. -
Вычисление несущей для APSK?
Pavel Proskura replied to Leshii's topic in Алгоритмы ЦОС (DSP)
Добрый день. Совершенно верно. Но я столкнулся со следующей проблемой. Записал сигнал с эфира DVB-S2. Когда стал анализировать его на модели, выяснил что в пользовательском ТВ (Триколор, НТВ+ и т.д.), пилоты отсутствуют. Преамбула составляет всего 26 символов, этого явно недостаточно чтобы надежно корректировать частоту. Вот у меня и возник вопрос как при большой расстройке и при плохом SNR делают АПЧ. Спасибо.