Функция filterFIRCreate

free of world
Сообщения: 2
Зарегистрирован: 01 дек 2010, 17:17

Функция filterFIRCreate

Сообщение free of world »

Доброе время суток!

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

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

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

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 1114
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: Функция filterFIRCreate

Сообщение Бахурин Сергей »

Добавил описание можно почитать http://dsplib.ru/dspdll/filterFIRCreate.html. Библиотеку обновил надо перезакачать.

free of world
Сообщения: 2
Зарегистрирован: 01 дек 2010, 17:17

Re: Функция filterFIRCreate

Сообщение free of world »

Я извиняюсь. Но я хотел сказать следующие: описания к функции filterFIRCreate нет в файле dsp.h.

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

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

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

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 1114
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: Функция filterFIRCreate

Сообщение Бахурин Сергей »

перезалил. Можно скачать с раздела программы. Пример использования 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;
} 

Dmitri Seva
Сообщения: 30
Зарегистрирован: 07 дек 2010, 09:29

Re: Функция filterFIRCreate

Сообщение 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 нельзя использовать для источников с разными частотами дискретизации чтобы получить тот же срез? Вроде бы, это очевидно, но раньше почему-то я упорно считал что можно рассчитать импульсную характеристику с заданными частотами один раз и использовать её для различных значений частоты дискретизации.

Аватара пользователя
Бахурин Сергей
Администратор
Сообщения: 1114
Зарегистрирован: 05 окт 2010, 19:55
Контактная информация:

Re: Функция filterFIRCreate

Сообщение Бахурин Сергей »

все цифровые фильтры всегда рассчитываются для нормированной частоты от 0 до 2pi рад/c или от 0 до 2 Гц. При использовании одного и тогоже фильтра для разных частот дискретизации всегда меняется физическая частота среза.

Ответить