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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
bahurin
сообщение Nov 14 2010, 08:01
Сообщение #16


Местный
***

Группа: Участник
Сообщений: 240
Регистрация: 20-09-08
Пользователь №: 40 347



Цитата(DRUID3 @ Nov 14 2010, 10:17) *
Давайте говорить честно - матлаб это модно. Столько функций, а главное дофига всего в книгах и интернете - почти не надо думать. Токо копируй и в консоль, или как там оно зовеЦЦо у него, вставляй...

Все правильно в это и есть преймущество матлаба! Вы пользуетесь результатами других людей, которые положили много много времени чтобы дать вам этот инструмент.
Go to the top of the page
 
+Quote Post
TViT
сообщение Nov 14 2010, 12:35
Сообщение #17


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 1-12-06
Пользователь №: 23 016



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

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.

Еще подскажите как лучше промоделировать АЧХ у меня в программе сравнить так скажем задумка генерить с цикле синусоиды по возрастанию частоты и пропускать через фильтр и строить график
Go to the top of the page
 
+Quote Post
bahurin
сообщение Nov 14 2010, 13:17
Сообщение #18


Местный
***

Группа: Участник
Сообщений: 240
Регистрация: 20-09-08
Пользователь №: 40 347



Цитата(TViT @ Nov 14 2010, 15:35) *
А что можно еще сказать когда ничего конкретного и конструктивного не сказано люди заходят усмехнуться и съязвить...


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

Цитата(TViT @ Nov 14 2010, 15:35) *
Матлаб платная среда можно ли результаты вычислений использовать в своих проектах если они будут платными


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

Цитата(TViT @ Nov 14 2010, 15:35) *
Еще подскажите как лучше промоделировать АЧХ у меня в программе сравнить так скажем задумка генерить с цикле синусоиды по возрастанию частоты и пропускать через фильтр и строить график


подставить в передаточную характеристику H(z) коэффициенты которой вы посчитали z=exp(j*w) и получите комплексный к-т передачи H(exp(jw)). АЧХ при этом модуль H(exp(jw)).
Go to the top of the page
 
+Quote Post
TViT
сообщение Nov 14 2010, 13:56
Сообщение #19


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 1-12-06
Пользователь №: 23 016



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

вот код переписан из 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 - Nov 14 2010, 14:02
Go to the top of the page
 
+Quote Post
bahurin
сообщение Nov 14 2010, 14:32
Сообщение #20


Местный
***

Группа: Участник
Сообщений: 240
Регистрация: 20-09-08
Пользователь №: 40 347



Код понять не могу, т.к. на 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));


фильтр как фильтр, только В с А местами поменял.
Go to the top of the page
 
+Quote Post
TViT
сообщение Nov 14 2010, 15:02
Сообщение #21


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 1-12-06
Пользователь №: 23 016



вот тот же код на Си из 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 где там А... коэфф где В...
Go to the top of the page
 
+Quote Post
bahurin
сообщение Nov 14 2010, 15:21
Сообщение #22


Местный
***

Группа: Участник
Сообщений: 240
Регистрация: 20-09-08
Пользователь №: 40 347




Не видел таких конструкций.
не понятен смысл
Код
py = &y[n-1];

при n=0, не понятно на что будет указывать py. Аналогично
Код
sum1 += ((S32) num[m] * (S32) px[-m]);

в цикле по m эта конструкция должна по идее должна приводить к эксцепшену по памяти.
Go to the top of the page
 
+Quote Post
TViT
сообщение Nov 15 2010, 16:01
Сообщение #23


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 1-12-06
Пользователь №: 23 016



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

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

Код
/*
* 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 - Nov 15 2010, 16:12
Go to the top of the page
 
+Quote Post
bahurin
сообщение Nov 15 2010, 16:27
Сообщение #24


Местный
***

Группа: Участник
Сообщений: 240
Регистрация: 20-09-08
Пользователь №: 40 347




NUM[MWSPT_NSEC][3] это B (числитель)
DEN[MWSPT_NSEC][3] зто А (знаменатель)
Go to the top of the page
 
+Quote Post
AlikM
сообщение Nov 16 2010, 21:40
Сообщение #25


Участник
*

Группа: Участник
Сообщений: 26
Регистрация: 5-10-09
Пользователь №: 52 767



Цитата(bahurin @ Nov 14 2010, 17:32) *
Но одно кидается в глаза. У фильтра принято обозначать к-ты числителя ПФ через b, а к-ты знаменателя через A. У вас обозначения наоборот, потому что A[0] должно быть равно 1.


Интересно, это где же так принято и по каким книгам Вас учат (учили)?
Вот ссылка на "библию начинающего радиоинженера" РтЦиС Гоноровского (в простонародии Гоноревич): Гоноровский
И если взлянуть на страницу 500, то увидите что там как раз наоборот.
Хотя это совсем не принципиально, а вот что принципиально- это если бы автор темы не поленился и взял и синтезировал этот фильтр 2-го порядка на бумажке собственными руками, то у него и для более сложных фильтров вопросов больше бы не возникло.
А если надо быстро расчитать фильтр и получить его программную реализацию причем в С коде, тогда вам сюда FilterSolut
Go to the top of the page
 
+Quote Post
PetrovichKR
сообщение Nov 17 2010, 04:44
Сообщение #26


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 20-03-10
Пользователь №: 56 092



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

Во всех книгах по цифровой обработке сигналов, которые я видел, коэффициенты рекурсивной части фильтра обозначают через a, нерекурсивной части через b. Гоноровский к таким книгам не относится, поскольку в ней изложены основы радиотехники, и цифровая обработка затрагивается поверхностно.
Но, опять же, это не принципиально.
Go to the top of the page
 
+Quote Post
TViT
сообщение Dec 18 2010, 05:55
Сообщение #27


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 1-12-06
Пользователь №: 23 016



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

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

Сообщение отредактировал TViT - Dec 18 2010, 05:56
Прикрепленные файлы
Прикрепленный файл  iir.rar ( 1.55 килобайт ) Кол-во скачиваний: 25
 
Go to the top of the page
 
+Quote Post
lisstret
сообщение Dec 19 2010, 20:52
Сообщение #28


Участник
*

Группа: Участник
Сообщений: 50
Регистрация: 10-06-10
Из: Владивосток
Пользователь №: 57 835



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


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

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


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

Сообщение отредактировал lisstret - Dec 19 2010, 20:53
Go to the top of the page
 
+Quote Post
TViT
сообщение Dec 20 2010, 13:24
Сообщение #29


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 1-12-06
Пользователь №: 23 016



Все понятно с коэффициентами. Подскажите по существу, по Scilab...
Go to the top of the page
 
+Quote Post
TViT
сообщение Dec 22 2010, 04:17
Сообщение #30


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 1-12-06
Пользователь №: 23 016



Нашел функцию casc — cascade realization of filter from coefficients, что она делает и как ее юзать не пойму?
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 26th June 2025 - 16:17
Рейтинг@Mail.ru


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