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

 
 
 
Reply to this topicStart new topic
> fvtool, отображение АЧХ
dcs
сообщение Aug 7 2018, 14:52
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 1-07-13
Из: СПб
Пользователь №: 77 337



Здравствуйте,

подскажите как сделать так, чтобы АЧХ (CIC,CFIR,и результирующая) отображались визуально "гладко, без изломов" при увеличении для моего примера при больших коэффициентах децимации.

Начальная частота семплирования Fs = 100MHz. На выходе хочу, например, 10kHz.

data @100MHz -> CIC (decimate by 5000) -> CFIR (decimate by 2) -> data @10kHz

P.S.
можно ли отобразить результат последнего fvtool(CICDecim, CICCompDecim, filtCasc, ... от 0 до целевой 10кГц?


Код
clc, clear, close all;

%% CIC
Fs_init = 100e6; % Hz

CIC_output_sample_rate = 20e3; % integer multiple of Fs_init

CIC_decim_factor = Fs_init/CIC_output_sample_rate; % decimatin factor

CICDecim = dsp.CICDecimator( ...
            'DecimationFactor', CIC_decim_factor, ...
            'DifferentialDelay', 1, ... % нули АЧХ cic будут на частотах кратных 20кГц
            'NumSections', 4);
        
Gain_CIC = gain(CICDecim);
        
f_CICDecim = fvtool(CICDecim,'Analysis','freq','ShowReference','off');                
f_CICDecim.NormalizeMagnitudeto1 = 'on';
legend(f_CICDecim,'CIC decimator');


%% CFIR with decimation by 2

fs = CIC_output_sample_rate; % sample rate @compensator input
fPass = 2e3;
fStop = 4e3;
                  
CICCompDecim = dsp.CICCompensationDecimator(CICDecim, ...
                                        'DecimationFactor',2, ...
                                        'PassbandFrequency',fPass, ...
                                        'StopbandFrequency',fStop, ...
                                        'PassbandRipple', 0.25, ...
                                        'StopbandAttenuation', 80, ...
                                        'SampleRate',fs);

f_CICCompDecim = fvtool(CICCompDecim,'Analysis','freq');                                    
legend(f_CICCompDecim, 'CIC compensator decimator');

filtCasc = dsp.FilterCascade(CICDecim,CICCompDecim);

f = fvtool(CICDecim, CICCompDecim, filtCasc, ...
    'ShowReference','off', ...
    'Fs', [fs*CIC_decim_factor fs fs*CIC_decim_factor]);

f.NormalizeMagnitudeto1 = 'on';
legend(f,'CIC Decimator','CIC Compensation Decimator', ...
    'Overall Response');


-спасибо



Сообщение отредактировал dcs - Aug 7 2018, 14:54
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
Самурай
сообщение Aug 7 2018, 16:26
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 468
Регистрация: 4-03-05
Пользователь №: 3 066



Цитата(dcs @ Aug 7 2018, 18:52) *
подскажите как сделать так, чтобы АЧХ (CIC,CFIR,и результирующая) отображались визуально "гладко, без изломов"
...
можно ли отобразить результат последнего fvtool(CICDecim, CICCompDecim, filtCasc, ... от 0 до целевой 10кГц?


По первому вопросу:

f = fvtool(...);
f.NumberofPoints = 100500;

По второму:

f = fvtool(...);
f.FrequencyRange = 'Specify freq. vector';
f.FrequencyVector = [0:10:10000];


Go to the top of the page
 
+Quote Post
dcs
сообщение Aug 7 2018, 18:06
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 1-07-13
Из: СПб
Пользователь №: 77 337



Цитата(Самурай @ Aug 7 2018, 17:26) *
По первому вопросу:

По второму:
спасибо
Go to the top of the page
 
+Quote Post
dcs
сообщение Aug 15 2018, 19:13
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 1-07-13
Из: СПб
Пользователь №: 77 337



здравствуйте.

подскажите, вот как у меня в посте выше есть cic и cfir

условно говоря, с выхода cic разрядность пусть 96 бит, это много для входа корректирующего.

Например, я округляю до 32 бит (беру старшие 32 значащих по результатам моделирования или есть другой способ? есть ли смысл окргулять по правилу 0.5 или именно так и надо? имею ввиду примерно следющее cic_out[96:65]+cic_out[64] если >0 и наоборот если отрицательный результат)

Так вот на сколько давить внеполосные сигналы в корректирующем фильтре? на 20*log10(2^32) = 193дБ ? как правильно?

-спасибо
Go to the top of the page
 
+Quote Post
Kluwert
сообщение Aug 21 2018, 11:36
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 239
Регистрация: 15-11-09
Из: Санкт-Петербург
Пользователь №: 53 639



Слушайте, у вас исходная частота выборок 100МГц, а конечная - 20КГц, если нигде опечатки нет. Передискретизация в 5000 раз?! Вы точно этого хотите? Это некая учебная задача? Потому что я не очень могу представить откуда в практических задачах мог приехать НЧ-сигнал с полосой порядка 20КГц оцифрованный на 100МГц.
Go to the top of the page
 
+Quote Post
soldat_shveyk
сообщение Aug 21 2018, 12:01
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859



Цитата
Потому что я не очень могу представить откуда в практических задачах

SDR-приемник? Самое то sm.gif
Go to the top of the page
 
+Quote Post
dcs
сообщение Aug 21 2018, 17:30
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 1-07-13
Из: СПб
Пользователь №: 77 337



Цитата(Kluwert @ Aug 21 2018, 11:36) *
я не очень могу представить откуда в практических задачах мог приехать НЧ-сигнал с полосой порядка 20КГц оцифрованный на 100МГц.

опечатки нет. fs=1.5e9, bw=3.2e3 (единственный такой режим. однополосная, КВ)

100e6, 20e3 - это условный пример.


все-таки повторю вопрос , при каскадной реализации фильтров из каких условий выбирается уровень подавления в каждом следующем фильтре?

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

-спасибо
Go to the top of the page
 
+Quote Post
soldat_shveyk
сообщение Aug 22 2018, 06:54
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 454
Регистрация: 3-07-07
Из: С-Петербург
Пользователь №: 28 859



Цитата
При каскадной реализации фильтров из каких условий выбирается уровень подавления в каждом следующем фильтре?

Все определяется Вашими требованиями к избирательности КВ приемника.
Самый простой и наглядный способ - постройте сквозную АЧХ всех каскадов фильтрации. Для этого надо импульсные характеристики всех фильтров привести к частоте дискретизации АЦП, то есть интерполировать на величину коэффициента децимации перед фильтром. Все интерполированные импульсные характеристики свернуть между собой. fvtool() от результирующей импульсной характеристики покажет сквозную АЧХ.
Go to the top of the page
 
+Quote Post
dcs
сообщение Aug 22 2018, 08:40
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 1-07-13
Из: СПб
Пользователь №: 77 337



Цитата(soldat_shveyk @ Aug 22 2018, 06:54) *
Все определяется Вашими требованиями к избирательности КВ приемника.
Самый простой и наглядный способ - постройте сквозную АЧХ всех каскадов фильтрации. Для этого надо импульсные характеристики всех фильтров привести к частоте дискретизации АЦП, то есть интерполировать на величину коэффициента децимации перед фильтром. Все интерполированные импульсные характеристики свернуть между собой. fvtool() от результирующей импульсной характеристики покажет сквозную АЧХ.

спасибо.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th April 2024 - 04:17
Рейтинг@Mail.ru


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