Страница 1 из 1

Функция filterFIRCreate

Добавлено: 01 дек 2010, 17:32
free of world
Доброе время суток!

В описании к dsp.dll нет рабочего примера для функции filterFIRCreate. В архиве, который предлагается скачать с раздела "Программы" нет на неё упоминания. В описании к функции есть код для работы с функцией. При компилировании этого кода функция возвращает DSP_ERROR.

Вопрос в следующем: будет ли реализована данная функция? Если - да, то когда будет реализована и когда будет описание к ней :roll: :roll: :roll:

С уважением, free...

Re: Функция filterFIRCreate

Добавлено: 01 дек 2010, 20:49
Бахурин Сергей
Добавил описание можно почитать http://dsplib.ru/dspdll/filterFIRCreate.html. Библиотеку обновил надо перезакачать.

Re: Функция filterFIRCreate

Добавлено: 02 дек 2010, 09:46
free of world
Я извиняюсь. Но я хотел сказать следующие: описания к функции filterFIRCreate нет в файле dsp.h.

в разделе "Программы" (http://dsplib.ru/download/dspdll.php) dll не обновлена (дата изменения - 11 ноября 2010) в архиве с программой (http://dsplib.ru/download/filter.php) дата изменения - 28 ноября 2010.

Откуда мне обновить библиотеку?

С уважением, free...

Re: Функция filterFIRCreate

Добавлено: 02 дек 2010, 12:40
Бахурин Сергей
перезалил. Можно скачать с раздела программы. Пример использования filterFIRCreate:

Код: Выделить всё

#include < stdio.h >
#include < stdlib.h >
#include < windows.h >
#include "dsp.h"

HMODULE hDLL;

int main(){
	//загрузка dsp.dll
	hDLL = LoadDSP();
	if(hDLL)
		printf("Load DSP.DLL...............OK\n");
	else{
		printf("Load DSP.DLL...............ERROR\n");
		system("Pause");
		return 0;
	}

	int Ns = 1024;
	double* s = (double*)malloc(Ns*sizeof(double));

	//..................
	//заполняю массив s
	//..................

	int Nh = 24;
	double* h = (double*)malloc(Nh*sizeof(double));

	if(filterFIRCreate(FB_LOW,0.1,0.2,h,Nh,WIN_HAMMING)==DSP_OK)
		printf("filterFIRCreate............OK\n"); 
	else
		printf("filterFIRCreate............ERROR\n"); 

	filterFIR(s,Ns,h,Nh,Nh/2-1);

	free(s);
	free(h);
	FreeLibrary(hDLL);
	system("Pause");
	return 0;
} 

Re: Функция filterFIRCreate

Добавлено: 23 дек 2010, 16:25
Dmitri Seva
Тут как раз назрел вопрос по поводу понимания КИХ-фильтров и использования данной функции.

Код: Выделить всё

filterFIRCreate(FB_LOW,0.1,0.2,h,Nh,WIN_HAMMING);
Правильно ли я понимаю что в приведенном выше коде 0.1 это нормированное число к частоте Найквиста? Таким образом, если мы фильтруем сигнал с частотой Найквиста 1024 Гц, то получим частоту среза 0.1*1024 = 102.4. А если на вход подадим сигнал с частотой Найквиста 512 то получим срез уже 51.2. Получается импульсную характеристику h нельзя использовать для источников с разными частотами дискретизации чтобы получить тот же срез? Вроде бы, это очевидно, но раньше почему-то я упорно считал что можно рассчитать импульсную характеристику с заданными частотами один раз и использовать её для различных значений частоты дискретизации.

Re: Функция filterFIRCreate

Добавлено: 23 дек 2010, 17:24
Бахурин Сергей
все цифровые фильтры всегда рассчитываются для нормированной частоты от 0 до 2pi рад/c или от 0 до 2 Гц. При использовании одного и тогоже фильтра для разных частот дискретизации всегда меняется физическая частота среза.