Перейти к содержанию
    

Давайте говорить честно - матлаб это модно. Столько функций, а главное дофига всего в книгах и интернете - почти не надо думать. Токо копируй и в консоль, или как там оно зовеЦЦо у него, вставляй...

Все правильно в это и есть преймущество матлаба! Вы пользуетесь результатами других людей, которые положили много много времени чтобы дать вам этот инструмент.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это что еще за агрессия? Вообще то это у вас проблемы а не у нас.

bahurin А что можно еще сказать когда ничего конкретного и конструктивного не сказано люди заходят усмехнуться и съязвить...

Бегите от VB со всех ног в сторону С++. Это первое, второе бегите еще быстрее чем от VB от SCILab в сторону matlab или GNU Octave. Поверьте если результаты SCILab отличаются от matlab, то врет SCILab а не матлаб. Что касается dsp - matlab можно считать эталоном.

 

Я не думаю что есть разница на чем писать. Мне если честно без разницы VB, ASM, C, Delphi просто результат нужен побыстрее, а программирую я поскольку постольку - редко, а на VB набросать быстренько инструмент для отладки пара пустяков и столько же минут. А на Си пишу для AVR, потому нет наработок и примеров для Си скачивать тоже искать нужно и разбираться на VB многое уже написано и понятно. Время крайне мало. Да и скорость выполнения не важна вот и пишу на VB.

 

Также не думаю что большая разница где коэффициенты считать тут больше алгоритм важен простота использования, а Матлаб платная среда можно ли результаты вычислений использовать в своих проектах если они будут платными, думаю чтоб таких проблем не возникало Atmel использует все фришное AVR32 Studio, Си(gcc), Scilab.

 

Еще подскажите как лучше промоделировать АЧХ у меня в программе сравнить так скажем задумка генерить с цикле синусоиды по возрастанию частоты и пропускать через фильтр и строить график

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А что можно еще сказать когда ничего конкретного и конструктивного не сказано люди заходят усмехнуться и съязвить...

 

А что можно сказать конструктивного если у вас в коде ошибка, а кода нет? У нас нет волшебных хрустальных шаров чтобы понять почему стандартная процедура IIR фильтрации у вас неправильно работает.

 

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

 

Можно матлаб для того и существует. Если конечно у вас матлаб лицензионный.

 

Еще подскажите как лучше промоделировать АЧХ у меня в программе сравнить так скажем задумка генерить с цикле синусоиды по возрастанию частоты и пропускать через фильтр и строить график

 

подставить в передаточную характеристику H(z) коэффициенты которой вы посчитали z=exp(j*w) и получите комплексный к-т передачи H(exp(jw)). АЧХ при этом модуль H(exp(jw)).

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В том то и дело что Матлаб не купленый... Мне покупать Матлаб только чтоб пару раз коэффициенты посчитать нет смысла я один ради интересса разбираюсь, выйдет что путное можно дальше о деньгах думать...

 

вот код переписан из DSPlib AVR32:

       size = 1023                                               ' //1024 выборки
For n = 0 To (size)
       sum1 = 0: sum2 = 0 
       For m = 0 To (ComboNum.ListCount - 1)     ' кол-во коэф. "А" в списке 5-1 потому что в массиве от 0
              sum1 = sum1 + (num(m) * Xn(n - m)) 
       Next m
       For m = 0 To (ComboDen.ListCount - 1)      'коэф. "B"
              sum2 = sum2 + ((den(m) * Yn(n - m - 1)))

' //Yn(n) = (num(0) * Xn(n) + num(0) * Xn(n - 1) + num(0) * Xn(n - 2)) - (den(0) * Yn(n)+ den(1) * Yn(n-1) и т.д.) раньше так работало

       Next m
       Yn(n) = sum1 - sum2
Next n

 

коэффициенты из ciirf1 семплирование - 11025Гц ПФ - 800-900Гц:

      секция 1
A:  0.000780  0.000000  -0.001561  0.000000  0.000780
B:  1.000000  -3.469910  4.930680  -3.332800  0.922566

Изменено пользователем TViT

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Код понять не могу, т.к. на VB не пишу. Но одно кидается в глаза. У фильтра принято обозначать к-ты числителя ПФ через b, а к-ты знаменателя через A. У вас обозначения наоборот, потому что A[0] должно быть равно 1. Возможно в этом ваша ошибка. Построил в матлабе АЧХ фильтра с приведенными к-тами:

B=[0.000780  0.000000  -0.001561  0.000000  0.000780];
A=[1.000000  -3.469910  4.930680  -3.332800  0.922566];

h = zeros(1,1024);
h(2) = 1;
h = filter(B,A,h);

H = fft(h);
Fs = 11025;
f = Fs*(0:1023)/1024;
plot(f,20*log10(H));

 

фильтр как фильтр, только В с А местами поменял.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вот тот же код на Си из AVR32 DSPlib:

 {
   int n, m;
   S32 sum1, sum2;
   dsp16_t *px, *py;

   num_prediv = DSP16_QB - num_prediv; //15-3
   den_prediv = DSP16_QB - den_prediv; //15-3

   for(n=0; n<size; n++)
   {
     sum1 = 0;
     sum2 = 0;
     px = &x[n];
     for(m=0; m<num_size; m++)
       sum1 += ((S32) num[m] * (S32) px[-m]);
     py = &y[n-1];
     for(m=0; m<den_size; m++)
       sum2 += ((S32) den[m] * (S32) py[-m]);

     sum1 >>= num_prediv; //>>3
     sum2 >>= den_prediv; //>>3

     y[n] = sum1 - sum2;
   }
}

 

А с В поменять странно попробую, хотя все работает, немогу понять при расчете через Матлаб fdatool где там А... коэфф где В...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Не видел таких конструкций.

не понятен смысл

py = &y[n-1];

при n=0, не понятно на что будет указывать py. Аналогично

sum1 += ((S32) num[m] * (S32) px[-m]);

в цикле по m эта конструкция должна по идее должна приводить к эксцепшену по памяти.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как ни странно все работает. Думаю так для производительности может сделали чтобы небыло лишних циклов записи чтения памяти она там флеш медленная.

 

Вот по тем же параметрам посчитал в матлабе где тут что, где А где В.

 

/*
* Filter Coefficients (C Source) generated by the Filter Design and Analysis Tool
*
* Generated by MATLAB(R) 7.9 and the Signal Processing Toolbox 6.12.
*
* Generated on: 15-Nov-2010 18:56:58
*
*/
/*
* Discrete-Time IIR Filter (real)
* -------------------------------
* Filter Structure    : Direct-Form II, Second-Order Sections
* Number of Sections  : 1
* Stable              : Yes
* Linear Phase        : No
*/

#define MWSPT_NSEC 3
const int NL[MWSPT_NSEC] = { 1,3,1 };
const real32_T NUM[MWSPT_NSEC][3] = {
  {
    0.02771298587,              0,              0 
  },
  {
                1,              0,             -1 
  },
  {
                1,              0,              0 
  }
};
const int DL[MWSPT_NSEC] = { 1,3,1 };
const real32_T DEN[MWSPT_NSEC][3] = {
  {
                1,              0,              0 
  },
  {
                1,   -1.721542239,   0.9445739985 
  },
  {
                1,              0,              0 
  }
};

 

Изменено пользователем TViT

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но одно кидается в глаза. У фильтра принято обозначать к-ты числителя ПФ через b, а к-ты знаменателя через A. У вас обозначения наоборот, потому что A[0] должно быть равно 1.

 

Интересно, это где же так принято и по каким книгам Вас учат (учили)?

Вот ссылка на "библию начинающего радиоинженера" РтЦиС Гоноровского (в простонародии Гоноревич): Гоноровский

И если взлянуть на страницу 500, то увидите что там как раз наоборот.

Хотя это совсем не принципиально, а вот что принципиально- это если бы автор темы не поленился и взял и синтезировал этот фильтр 2-го порядка на бумажке собственными руками, то у него и для более сложных фильтров вопросов больше бы не возникло.

А если надо быстро расчитать фильтр и получить его программную реализацию причем в С коде, тогда вам сюда FilterSolut

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Интересно, это где же так принято и по каким книгам Вас учат (учили)?

Во всех книгах по цифровой обработке сигналов, которые я видел, коэффициенты рекурсивной части фильтра обозначают через a, нерекурсивной части через b. Гоноровский к таким книгам не относится, поскольку в ней изложены основы радиотехники, и цифровая обработка затрагивается поверхностно.

Но, опять же, это не принципиально.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ребят кто разбирается в Scilab помогите еще, нужно рассчитать коэффициенты по секциям последовательно, как в программке ciirf1. Массивом получается, а по секциям не могу понять как разбить, рассчитать в Scilab.

 

Вот код из AVR32 DSPlib (у меня урезанный только параметры коэффициенты и график кидаю весь код мало ли что-то по незнанию выкинул нужное):

iir.rar

Изменено пользователем TViT

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У фильтра принято обозначать к-ты числителя ПФ через b, а к-ты знаменателя через A.

 

Вопрос спорный, в России и в зарубежье они по разному обозначались, соответственно и в Матлабе они обозначаются как принято за бугром. А так как щас новые книжки ориентированны на матлаб, то и в книгах российских авторов приняты другие обозначения. В книжке Сергиенко даже есть сноска где это поясняется! Короче из за этого и различия.

 

Гоноровский к таким книгам не относится, поскольку в ней изложены основы радиотехники, и цифровая обработка затрагивается поверхностно.

 

Мне кажется что он писал так, как было принято у нас. А не из за того, что он чет не догонял.

Изменено пользователем lisstret

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нашел функцию casc — cascade realization of filter from coefficients, что она делает и как ее юзать не пойму?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...