18.02.2013, 18:15. Просмотров 2485. Ответов 1
В качестве библиотеки взял хваленую IPP, и тут возник рад вопросов, вот код:
C++ (Qt) |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| packageSize = 4096;
IppsFFTSpec_C_64fc *scope_C_64fc;
ippsFFTInitAlloc_C_64fc(&scope_C_64fc, Length2Order(packageSize), IPP_FFT_DIV_FWD_BY_N, ippAlgHintAccurate);
Ipp64fc *input_C_64fc;
input_C_64fc = ippsMalloc_64fc(packageSize);
for (int i = 0; i < packageSize; i++)
{
(input_C_64fc + i)->re = sin(i);
(input_C_64fc + i)->im = 0.0;
}
ippsWinHamming_64fc_I(input_C_64fc, packageSize);
ippsFFTFwd_CToC_64fc_I(input_C_64fc, scope_C_64fc, 0);
Ipp64f *output_64f;
output_64f = ippsMalloc_64f(packageSize);
ippsMagnitude_64fc(input_C_64fc, output_64f, packageSize);
for (int i = 0; i < packageSize; i++)
{
X[i] = i;
Y[i] = *(output_64f + i);
}
ippsFree(scope_C_64fc);
ippsFree(input_C_64fc);
ippsFree(output_64f); |
|
у меня есть реальные данные с сигнала, их 4096 отсчетов, они изменяются по синусойде, в коде я это написал.
создаю переменную библиотеки ipp для комплексных чисел, где реальную часть забиваю данными, а мнимую часть нулями.
Применяю весовое окно Хэмминга и делаю само преобразование, после чего делаю магнитуду и копирую в массивы для рисования.
Кто пользовался библиотеками IPP прошу вас откликнуться! Спасибо)