libdspl-2.0
Библиотека алгоритмов цифровой обработки сигналов
dspl.c
1 /*
2 * Copyright (c) 2015-2020 Sergey Bakhurin
3 * Digital Signal Processing Library [http://dsplib.org]
4 *
5 * This file is part of libdspl-2.0.
6 *
7 * is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU Lesser General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * DSPL is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public License
18 * along with Foobar. If not, see <http://www.gnu.org/licenses/>.
19 */
20 
21 
22 
23 #ifdef WIN_OS
24 #include <windows.h>
25 #endif /* WIN_OS */
26 
27 #ifdef LINUX_OS
28 #include <dlfcn.h>
29 #endif /* LINUX_OS */
30 
31 
32 #include <stdio.h>
33 #include "dspl.h"
34 
35 
36 #ifndef BUILD_LIB
37 
38 p_acos_cmplx acos_cmplx ;
39 p_addlog addlog ;
40 p_array_scale_lin array_scale_lin ;
41 p_asin_cmplx asin_cmplx ;
42 
43 p_butter_ap butter_ap ;
44 p_bessel_i0 bessel_i0 ;
45 p_bilinear bilinear ;
46 p_butter_ap_zp butter_ap_zp ;
47 
48 p_cheby_poly1 cheby_poly1 ;
49 p_cheby_poly2 cheby_poly2 ;
50 p_cheby1_ap cheby1_ap ;
51 p_cheby1_ap_zp cheby1_ap_zp ;
52 p_cheby2_ap cheby2_ap ;
53 p_cheby2_ap_wp1 cheby2_ap_wp1 ;
54 p_cheby2_ap_zp cheby2_ap_zp ;
55 p_cmplx2re cmplx2re ;
56 p_concat concat ;
57 p_conv conv ;
58 p_conv_cmplx conv_cmplx ;
59 p_conv_fft conv_fft ;
60 p_conv_fft_cmplx conv_fft_cmplx ;
61 p_cos_cmplx cos_cmplx ;
62 
63 p_decimate decimate ;
64 p_decimate_cmplx decimate_cmplx ;
65 p_dft dft ;
66 p_dft_cmplx dft_cmplx ;
67 p_dmod dmod ;
68 p_dspl_info dspl_info ;
69 
70 p_ellip_acd ellip_acd ;
71 p_ellip_acd_cmplx ellip_acd_cmplx ;
72 p_ellip_ap ellip_ap ;
73 p_ellip_ap_zp ellip_ap_zp ;
74 p_ellip_asn ellip_asn ;
75 p_ellip_asn_cmplx ellip_asn_cmplx ;
76 p_ellip_cd ellip_cd ;
77 p_ellip_cd_cmplx ellip_cd_cmplx ;
78 p_ellip_landen ellip_landen ;
79 p_ellip_modulareq ellip_modulareq ;
80 p_ellip_rat ellip_rat ;
81 p_ellip_sn ellip_sn ;
82 p_ellip_sn_cmplx ellip_sn_cmplx ;
83 
84 p_farrow_lagrange farrow_lagrange ;
85 p_farrow_spline farrow_spline ;
86 p_fft fft ;
87 p_fft_abs fft_abs ;
88 p_fft_abs_cmplx fft_abs_cmplx ;
89 p_fft_cmplx fft_cmplx ;
90 p_fft_create fft_create ;
91 p_fft_free fft_free ;
92 p_fft_mag fft_mag ;
93 p_fft_mag_cmplx fft_mag_cmplx ;
94 p_fft_shift fft_shift ;
95 p_fft_shift_cmplx fft_shift_cmplx ;
96 p_filter_freq_resp filter_freq_resp ;
97 p_filter_iir filter_iir ;
98 p_filter_ws1 filter_ws1 ;
99 p_filter_zp2ab filter_zp2ab ;
100 p_find_max_abs find_max_abs ;
101 p_fir_linphase fir_linphase ;
102 p_flipip flipip ;
103 p_flipip_cmplx flipip_cmplx ;
104 p_fourier_integral_cmplx fourier_integral_cmplx ;
105 p_fourier_series_dec fourier_series_dec ;
106 p_fourier_series_dec_cmplx fourier_series_dec_cmplx ;
107 p_fourier_series_rec fourier_series_rec ;
108 p_freqs freqs ;
109 p_freqs_cmplx freqs_cmplx ;
110 p_freqs2time freqs2time ;
111 p_freqz freqz ;
112 
113 p_gnuplot_close gnuplot_close ;
114 p_gnuplot_cmd gnuplot_cmd ;
115 p_gnuplot_create gnuplot_create ;
116 p_gnuplot_open gnuplot_open ;
117 p_goertzel goertzel ;
118 p_goertzel_cmplx goertzel_cmplx ;
119 p_group_delay group_delay ;
120 
121 p_histogram histogram ;
122 p_histogram_norm histogram_norm ;
123 
124 p_idft_cmplx idft_cmplx ;
125 p_ifft_cmplx ifft_cmplx ;
126 p_iir iir ;
127 
128 p_linspace linspace ;
129 p_log_cmplx log_cmplx ;
130 p_logspace logspace ;
131 p_low2bp low2bp ;
132 p_low2bs low2bs ;
133 p_low2high low2high ;
134 p_low2low low2low ;
135 
136 p_matrix_eig_cmplx matrix_eig_cmplx ;
137 p_matrix_eye matrix_eye ;
138 p_matrix_eye_cmplx matrix_eye_cmplx ;
139 p_matrix_mul matrix_mul ;
140 p_matrix_print matrix_print ;
141 p_matrix_print_cmplx matrix_print_cmplx ;
142 p_matrix_transpose matrix_transpose ;
143 p_matrix_transpose_cmplx matrix_transpose_cmplx ;
144 p_matrix_transpose_hermite matrix_transpose_hermite ;
145 p_mean mean ;
146 p_mean_cmplx mean_cmplx ;
147 p_minmax minmax ;
148 
149 p_ones ones ;
150 
151 p_phase_delay phase_delay ;
152 p_poly_z2a_cmplx poly_z2a_cmplx ;
153 p_polyroots polyroots ;
154 p_polyval polyval ;
155 p_polyval_cmplx polyval_cmplx ;
156 p_psd_bartlett psd_bartlett ;
157 p_psd_bartlett_cmplx psd_bartlett_cmplx ;
158 p_psd_periodogram psd_periodogram ;
159 p_psd_periodogram_cmplx psd_periodogram_cmplx ;
160 p_psd_welch psd_welch ;
161 p_psd_welch_cmplx psd_welch_cmplx ;
162 
163 p_randb randb ;
164 p_randb2 randb2 ;
165 p_randi randi ;
166 p_randn randn ;
167 p_randn_cmplx randn_cmplx ;
168 p_random_init random_init ;
169 p_randu randu ;
170 p_ratcompos ratcompos ;
171 p_re2cmplx re2cmplx ;
172 p_readbin readbin ;
173 
174 p_signal_pimp signal_pimp ;
175 p_signal_saw signal_saw ;
176 p_sin_cmplx sin_cmplx ;
177 p_sinc sinc ;
178 p_sine_int sine_int ;
179 p_sqrt_cmplx sqrt_cmplx ;
180 p_std std ;
181 p_std_cmplx std_cmplx ;
182 
183 p_trapint trapint ;
184 p_trapint_cmplx trapint_cmplx ;
185 
186 p_unwrap unwrap ;
187 
188 p_vector_dot vector_dot ;
189 p_verif verif ;
190 p_verif_data_gen verif_data_gen ;
191 p_verif_cmplx verif_cmplx ;
192 p_verif_str verif_str ;
193 p_verif_str_cmplx verif_str_cmplx ;
194 
195 p_window window ;
196 p_writebin writebin ;
197 p_writetxt writetxt ;
198 p_writetxt_3d writetxt_3d ;
199 p_writetxt_3dline writetxt_3dline ;
200 p_writetxt_cmplx writetxt_cmplx ;
201 p_writetxt_cmplx_im writetxt_cmplx_im ;
202 p_writetxt_cmplx_re writetxt_cmplx_re ;
203 p_writetxt_int writetxt_int ;
204 
205 p_xcorr xcorr ;
206 p_xcorr_cmplx xcorr_cmplx ;
207 
208 
209 #ifdef WIN_OS
210 #define LOAD_FUNC(fn) \
211  fname = #fn;\
212  fn = (p_##fn)GetProcAddress(handle, fname);\
213  if(! fn) goto exit_label;
214 #endif
215 
216 
217 
218 #ifdef LINUX_OS
219 #define LOAD_FUNC(fn) \
220  fname = #fn;\
221  fn = (p_##fn)dlsym(handle, fname);\
222  if ((error = dlerror()) != NULL) goto exit_label
223 #endif
224 
225 
226 void* dspl_load()
227 {
228  char* fname;
229  #ifdef WIN_OS
230  HINSTANCE handle;
231  handle = LoadLibrary(TEXT("libdspl.dll"));
232  if (!handle)
233  {
234  printf("libdspl.dll loading ERROR!\n");
235  return NULL;
236  }
237  #endif /* WIN_OS */
238 
239 
240  #ifdef LINUX_OS
241  char* error;
242  void *handle;
243  /* open the *.so */
244  handle = dlopen ("./libdspl.so", RTLD_LAZY);
245  if (!handle)
246  {
247  printf("libdspl.so loading ERROR!\n");
248  return NULL;
249  }
250  #endif /* LINUX_OS */
251 
252  LOAD_FUNC(acos_cmplx);
253  LOAD_FUNC(addlog);
254  LOAD_FUNC(array_scale_lin);
255  LOAD_FUNC(asin_cmplx);
256 
257  LOAD_FUNC(bessel_i0);
258  LOAD_FUNC(bilinear);
259  LOAD_FUNC(butter_ap);
260  LOAD_FUNC(butter_ap_zp);
261 
262  LOAD_FUNC(cheby_poly1);
263  LOAD_FUNC(cheby_poly2);
264  LOAD_FUNC(cheby1_ap);
265  LOAD_FUNC(cheby1_ap_zp);
266  LOAD_FUNC(cheby2_ap);
267  LOAD_FUNC(cheby2_ap_wp1);
268  LOAD_FUNC(cheby2_ap_zp);
269  LOAD_FUNC(cmplx2re);
270  LOAD_FUNC(concat);
271  LOAD_FUNC(conv);
272  LOAD_FUNC(conv_cmplx);
273  LOAD_FUNC(conv_fft);
274  LOAD_FUNC(conv_fft_cmplx);
275  LOAD_FUNC(cos_cmplx);
276 
277  LOAD_FUNC(decimate);
278  LOAD_FUNC(decimate_cmplx);
279  LOAD_FUNC(dft);
280  LOAD_FUNC(dft_cmplx);
281  LOAD_FUNC(dmod);
282  LOAD_FUNC(dspl_info);
283 
284  LOAD_FUNC(ellip_acd);
285  LOAD_FUNC(ellip_acd_cmplx);
286  LOAD_FUNC(ellip_ap);
287  LOAD_FUNC(ellip_ap_zp);
288  LOAD_FUNC(ellip_asn);
289  LOAD_FUNC(ellip_asn_cmplx);
290  LOAD_FUNC(ellip_cd);
291  LOAD_FUNC(ellip_cd_cmplx);
292  LOAD_FUNC(ellip_landen);
293  LOAD_FUNC(ellip_modulareq);
294  LOAD_FUNC(ellip_rat);
295  LOAD_FUNC(ellip_sn);
296  LOAD_FUNC(ellip_sn_cmplx);
297 
298  LOAD_FUNC(farrow_lagrange);
299  LOAD_FUNC(farrow_spline);
300  LOAD_FUNC(fft);
301  LOAD_FUNC(fft_cmplx);
302  LOAD_FUNC(fft_create);
303  LOAD_FUNC(fft_free);
304  LOAD_FUNC(fft_mag);
305  LOAD_FUNC(fft_mag_cmplx);
306  LOAD_FUNC(fft_shift);
307  LOAD_FUNC(fft_shift_cmplx);
308  LOAD_FUNC(filter_freq_resp);
309  LOAD_FUNC(filter_iir);
310  LOAD_FUNC(filter_ws1);
311  LOAD_FUNC(filter_zp2ab);
312  LOAD_FUNC(find_max_abs);
313  LOAD_FUNC(fir_linphase);
314  LOAD_FUNC(flipip);
315  LOAD_FUNC(flipip_cmplx);
316  LOAD_FUNC(fourier_integral_cmplx);
317  LOAD_FUNC(fourier_series_dec);
318  LOAD_FUNC(fourier_series_dec_cmplx);
319  LOAD_FUNC(fourier_series_rec);
320  LOAD_FUNC(freqz);
321  LOAD_FUNC(freqs);
322  LOAD_FUNC(freqs_cmplx);
323  LOAD_FUNC(freqs2time);
324 
325  LOAD_FUNC(gnuplot_close);
326  LOAD_FUNC(gnuplot_cmd);
327  LOAD_FUNC(gnuplot_create);
328  LOAD_FUNC(gnuplot_open);
329  LOAD_FUNC(goertzel);
330  LOAD_FUNC(goertzel_cmplx);
331  LOAD_FUNC(group_delay);
332 
333  LOAD_FUNC(histogram);
334  LOAD_FUNC(histogram_norm);
335 
336  LOAD_FUNC(idft_cmplx);
337  LOAD_FUNC(ifft_cmplx);
338  LOAD_FUNC(iir);
339 
340  LOAD_FUNC(linspace);
341  LOAD_FUNC(log_cmplx);
342  LOAD_FUNC(logspace);
343  LOAD_FUNC(low2bp);
344  LOAD_FUNC(low2bs);
345  LOAD_FUNC(low2high);
346  LOAD_FUNC(low2low);
347 
348  LOAD_FUNC(matrix_eig_cmplx);
349  LOAD_FUNC(matrix_eye);
350  LOAD_FUNC(matrix_eye_cmplx);
351  LOAD_FUNC(matrix_mul);
352  LOAD_FUNC(matrix_print);
353  LOAD_FUNC(matrix_print_cmplx);
354  LOAD_FUNC(matrix_transpose);
355  LOAD_FUNC(matrix_transpose_cmplx);
356  LOAD_FUNC(matrix_transpose_hermite);
357  LOAD_FUNC(mean);
358  LOAD_FUNC(mean_cmplx);
359  LOAD_FUNC(minmax);
360 
361  LOAD_FUNC(ones);
362 
363  LOAD_FUNC(phase_delay);
364  LOAD_FUNC(poly_z2a_cmplx);
365  LOAD_FUNC(polyroots);
366  LOAD_FUNC(polyval);
367  LOAD_FUNC(polyval_cmplx);
368  LOAD_FUNC(psd_bartlett);
369  LOAD_FUNC(psd_bartlett_cmplx);
370  LOAD_FUNC(psd_periodogram);
371  LOAD_FUNC(psd_periodogram_cmplx);
372  LOAD_FUNC(psd_welch);
373  LOAD_FUNC(psd_welch_cmplx);
374 
375  LOAD_FUNC(randi);
376  LOAD_FUNC(randb);
377  LOAD_FUNC(randb2);
378  LOAD_FUNC(randn);
379  LOAD_FUNC(randn_cmplx);
380  LOAD_FUNC(random_init);
381  LOAD_FUNC(randu);
382  LOAD_FUNC(ratcompos);
383  LOAD_FUNC(re2cmplx);
384  LOAD_FUNC(readbin);
385 
386  LOAD_FUNC(signal_pimp);
387  LOAD_FUNC(signal_saw);
388  LOAD_FUNC(sin_cmplx);
389  LOAD_FUNC(sinc);
390  LOAD_FUNC(sine_int);
391  LOAD_FUNC(sqrt_cmplx);
392  LOAD_FUNC(std);
393  LOAD_FUNC(std_cmplx);
394 
395  LOAD_FUNC(trapint);
396  LOAD_FUNC(trapint_cmplx);
397 
398  LOAD_FUNC(unwrap);
399 
400  LOAD_FUNC(vector_dot);
401  LOAD_FUNC(verif);
402  LOAD_FUNC(verif_data_gen);
403  LOAD_FUNC(verif_cmplx);
404  LOAD_FUNC(verif_str);
405  LOAD_FUNC(verif_str_cmplx);
406 
407  LOAD_FUNC(window);
408  LOAD_FUNC(writebin);
409  LOAD_FUNC(writetxt);
410  LOAD_FUNC(writetxt_3d);
411  LOAD_FUNC(writetxt_3dline);
412  LOAD_FUNC(writetxt_cmplx);
413  LOAD_FUNC(writetxt_cmplx_im);
414  LOAD_FUNC(writetxt_cmplx_re);
415  LOAD_FUNC(writetxt_int);
416 
417  LOAD_FUNC(xcorr);
418  LOAD_FUNC(xcorr_cmplx);
419 
420 
421  #ifdef WIN_OS
422  return (void*)handle;
423  exit_label:
424  printf("function %s loading ERROR!\n", fname);
425  if(handle)
426  FreeLibrary(handle);
427  return NULL;
428  #endif /* WIN_OS */
429 
430 
431  #ifdef LINUX_OS
432  return handle;
433  exit_label:
434  printf("function %s loading ERROR!\n", fname);
435  if(handle)
436  dlclose(handle);
437  return NULL;
438  #endif /* LINUX_OS */
439 }
440 
441 
442 
443 void dspl_free(void* handle)
444 {
445  #ifdef WIN_OS
446  FreeLibrary((HINSTANCE)handle);
447  #endif /* WIN_OS */
448 
449  #ifdef LINUX_OS
450  dlclose(handle);
451  #endif /* LINUX_OS */
452 }
453 
454 #endif /* BUILD_LIB */
int window(double *w, int n, int win_type, double param)
Расчет функции оконного взвешивания
Definition: win.c:308
int ellip_ap_zp(int ord, double rp, double rs, complex_t *z, int *nz, complex_t *p, int *np)
Расчет массивов нулей и полюсов передаточной функции аналогового нормированного эллиптического ФНЧ.
Definition: filter_ap.c:1786
int sine_int(double *x, int n, double *si)
Функция интегрального синуса
Definition: math.c:1043
int cheby1_ap(double rp, int ord, double *b, double *a)
Расчет передаточной характеристики аналогового нормированного ФНЧ Чебышёва первого рода.
Definition: filter_ap.c:601
int flipip_cmplx(complex_t *x, int n)
Функция отражения комплексного вектора x
Definition: array.c:842
int ellip_cd(double *u, int n, double k, double *y)
Эллиптическая функция Якоби вещественного аргумента
Definition: ellipj.c:594
int butter_ap_zp(int ord, double rp, complex_t *z, int *nz, complex_t *p, int *np)
Расчет массивов нулей и полюсов передаточной функции аналогового нормированного ФНЧ Баттерворта.
Definition: filter_ap.c:402
int filter_iir(double *b, double *a, int ord, double *x, int n, double *y)
Фильтрация вещественного сигнала вещественным БИХ-фильтром
Definition: conv.c:993
int ratcompos(double *b, double *a, int n, double *c, double *d, int p, double *beta, double *alpha)
Рациональная композиця
Definition: filter_ft.c:602
int fourier_series_rec(double *w, complex_t *s, int nw, double *t, int nt, complex_t *y)
Восстановление сигнала при усечении ряда Фурье
int writebin(void *x, int n, int dtype, char *fn)
Сохранить данные в бинарный файл
Definition: inout.c:328
int low2low(double *b, double *a, int ord, double w0, double w1, double *beta, double *alpha)
Частотное преобразование ФНЧ-ФНЧ
Definition: filter_ft.c:426
int flipip(double *x, int n)
Функция отражения вещественного вектора x
Definition: array.c:719
int bilinear(double *bs, double *as, int ord, double *bz, double *az)
Билинейное преобразование передаточной характеристики аналогового фильтра , в передаточную характерис...
Definition: filter_iir.c:210
int writetxt_int(int *x, int *y, int n, char *fn)
Сохранить целочисленные данные в текстовый файл
Definition: inout.c:664
int conv(double *a, int na, double *b, int nb, double *c)
Линейная свертка двух вещественных векторов
Definition: conv.c:157
int cheby_poly2(double *x, int n, int ord, double *y)
Многочлен Чебышева второго рода порядка ord
Definition: cheby.c:285
int log_cmplx(complex_t *x, int n, complex_t *y)
Натуральный логарифм комплексного аргумента x.
Definition: math.c:718
int polyval(double *a, int ord, double *x, int n, double *y)
Расчет вещественного полинома
Definition: polyval.c:219
int acos_cmplx(complex_t *x, int n, complex_t *y)
Арккосинус комплексного аргумента x.
Definition: math.c:141
int idft_cmplx(complex_t *x, int n, complex_t *y)
Обратное дискретное преобразование Фурье комплексного спектра.
Definition: dft.c:500
int polyroots(double *a, int ord, complex_t *r, int *info)
Расчет корней вещественного полинома
Definition: polyval.c:135
int fft_shift(double *x, int n, double *y)
Перестановка спектральных отсчетов дискретного преобразования Фурье
Definition: fft.c:1153
int psd_welch_cmplx(complex_t *x, int n, int win_type, double win_param, int nfft, int noverlap, fft_t *pfft, double fs, int flag, double *ppsd, double *pfrq)
Непараметрическая оценка спектральной плотности мощности (СПМ) комплексного сигнала методом Уэлча.
Definition: psd.c:1321
void gnuplot_close(void *h)
Закрыть хэндл GNUPLOT.
Definition: gnuplot.c:325
int randn(double *x, int n, double mu, double sigma, random_t *prnd)
Генерация вектора нормально распределенных псевдослучайных чисел.
Definition: randgen.c:589
int iir(double rp, double rs, int ord, double w0, double w1, int type, double *b, double *a)
Функция расчета коэффициентов передаточной характеристики цифрового фильтра БИХ.
Definition: filter_iir.c:404
int low2high(double *b, double *a, int ord, double w0, double w1, double *beta, double *alpha)
Частотное преобразование ФНЧ-ФВЧ
Definition: filter_ft.c:280
int fft_create(fft_t *pfft, int n)
Заполнение структуры fft_t для алгоритма БПФ
Definition: fft.c:892
int fft_cmplx(complex_t *x, int n, fft_t *pfft, complex_t *y)
Быстрое преобразование Фурье комплексного сигнала
Definition: fft.c:645
int fourier_series_dec(double *t, double *s, int nt, double period, int nw, double *w, complex_t *y)
Расчет коэффициентов разложения в ряд Фурье
int ifft_cmplx(complex_t *x, int n, fft_t *pfft, complex_t *y)
Обратное быстрое преобразование Фурье
Definition: fft.c:179
int std_cmplx(complex_t *x, int n, double *s)
Выборочная оценка стандартного отклонения комплексного вектора x
Definition: statistic.c:662
int psd_bartlett_cmplx(complex_t *x, int n, int nfft, fft_t *pfft, double fs, int flag, double *ppsd, double *pfrq)
Непараметрическая оценка спектральной плотности мощности (СПМ) комплексного сигнала методом Бартлетта...
Definition: psd.c:367
int logspace(double x0, double x1, int n, int type, double *x)
Функция заполняет массив значениями логарифмической шкале
Definition: array.c:1192
int ellip_acd(double *w, int n, double k, double *u)
Обратная эллиптическая функция Якоби вещественного аргумента
Definition: ellipj.c:103
int polyval_cmplx(complex_t *a, int ord, complex_t *x, int n, complex_t *y)
Расчет комплексного полинома
Definition: polyval.c:293
void fft_free(fft_t *pfft)
Очистить структуру fft_t алгоритма БПФ
Definition: fft.c:1009
int phase_delay(double *b, double *a, int ord, int flag, double *w, int n, double *tau)
Расчет фазовой задержки цифрового или аналогового фильтра.
Definition: filter_an.c:1190
int psd_periodogram_cmplx(complex_t *x, int n, int win_type, double win_param, fft_t *pfft, double fs, int flag, double *ppsd, double *pfrq)
Непараметрическая оценка спектральной плотности мощности (СПМ) комплексного сигнала методом модифицир...
Definition: psd.c:818
int psd_welch(double *x, int n, int win_type, double win_param, int nfft, int noverlap, fft_t *pfft, double fs, int flag, double *ppsd, double *pfrq)
Непараметрическая оценка спектральной плотности мощности (СПМ) вещественного сигнала методом Уэлча.
Definition: psd.c:1060
int psd_bartlett(double *x, int n, int nfft, fft_t *pfft, double fs, int flag, double *ppsd, double *pfrq)
Непараметрическая оценка спектральной плотности мощности (СПМ) вещественного сигнала методом Бартлетт...
Definition: psd.c:149
void * dspl_load()
Произвести динамическую линковку и загрузить функции libdspl-2.0.
int ellip_sn_cmplx(complex_t *u, int n, double k, complex_t *y)
Эллиптическая функция Якоби комплексного аргумента
Definition: ellipj.c:1216
int ellip_sn(double *u, int n, double k, double *y)
Эллиптическая функция Якоби вещественного аргумента
Definition: ellipj.c:1111
int xcorr_cmplx(complex_t *x, int nx, complex_t *y, int ny, int flag, int nr, complex_t *r, double *t)
Оценка вектора взаимной корреляции для дискретных комплексных последовательностей x и y.
Definition: xcorr.c:449
int xcorr(double *x, int nx, double *y, int ny, int flag, int nr, double *r, double *t)
Оценка вектора взаимной корреляции для дискретных вещественных последовательностей x и y.
Definition: xcorr.c:214
void gnuplot_cmd(void *h, char *cmd)
Функция посылает команду cmd пакету GNUPLOT, для построения или оформления графика,...
Definition: gnuplot.c:390
int goertzel(double *x, int n, int *ind, int k, complex_t *y)
Алгоритм Гёрцеля для расчета отдельных спектральных отсчетов дискретного преобразования Фурье веществ...
Definition: goertzel.c:125
int randu(double *x, int n, random_t *prnd)
Генерация вектора равномерно-распределенных в интервале от 0 до 1 псевдослучайных чисел.
Definition: randgen.c:727
int randi(int *x, int n, int start, int stop, random_t *prnd)
Генерация целочисленного вектора равномерно распределенных псевдослучайных чисел.
Definition: randgen.c:498
int fft(double *x, int n, fft_t *pfft, complex_t *y)
Быстрое преобразование Фурье вещественного сигнала
Definition: fft.c:356
int writetxt_3d(double *x, int nx, double *y, int ny, double *z, char *fn)
Сохранить данные для построения 3D графика
Definition: inout.c:880
int ellip_asn_cmplx(complex_t *w, int n, double k, complex_t *u)
Обратная эллиптическая функция Якоби комплексного аргумента
Definition: ellipj.c:447
int butter_ap(double rp, int ord, double *b, double *a)
Расчет передаточной характеристики аналогового нормированного ФНЧ Баттерворта.
Definition: filter_ap.c:175
int cheby_poly1(double *x, int n, int ord, double *y)
Многочлен Чебышева первого рода порядка ord
Definition: cheby.c:134
int re2cmplx(double *x, int n, complex_t *y)
Преобразование массива вещественных данных в массив комплексных данных.
Definition: complex.c:246
int std(double *x, int n, double *s)
Выборочная оценка стандартного отклонения вещественного вектора x
Definition: statistic.c:556
int writetxt(double *x, double *y, int n, char *fn)
Сохранить вещественные данные в текстовый файл
Definition: inout.c:491
int random_init(random_t *prnd, int type, void *seed)
Инициализация датчиков псевдослучайных чисел.
Definition: randgen.c:121
int cmplx2re(complex_t *x, int n, double *re, double *im)
Преобразование массива комплексных данных в два массива вещественных данных, содержащих реальную и мн...
Definition: complex.c:130
int conv_cmplx(complex_t *a, int na, complex_t *b, int nb, complex_t *c)
Линейная свертка двух комплексных векторов
Definition: conv.c:327
int freqz(double *b, double *a, int ord, double *w, int n, complex_t *h)
Расчет комплексного коэффициента передачи цифрового фильтра.
Definition: filter_an.c:980
int matrix_eig_cmplx(complex_t *a, int n, complex_t *v, int *info)
Расчет собственных значений квадратной комплексной матрицы.
Definition: matrix.c:90
int ones(double *x, int n)
Функция заполнения вещественного массива единицами
Definition: array.c:1302
int randb(double *x, int n, random_t *prnd)
Генерация бинарного униполярного [0, 1] псевдослучайного вектора
Definition: randgen.c:244
int cheby1_ap_zp(int ord, double rp, complex_t *z, int *nz, complex_t *p, int *np)
Расчет массивов нулей и полюсов передаточной функции аналогового нормированного ФНЧ Чебышёва первого...
Definition: filter_ap.c:832
int filter_freq_resp(double *b, double *a, int ord, double *w, int n, int flag, double *mag, double *phi, double *tau)
Расчет амплитудно-частотной (АЧХ), фазочастотной характеристик (ФЧХ), а также группового времени запа...
Definition: filter_an.c:463
void dspl_free(void *handle)
Очищает связанную ранее динамическую библиотеку DSPL-2.0.
int decimate(double *x, int n, int d, double *y, int *cnt)
Децимация вещественного вектора данных
Definition: array.c:445
int find_max_abs(double *a, int n, double *m, int *ind)
Поиск максимального по модулю элемента вещественного вектора a
Definition: statistic.c:123
int ellip_ap(double rp, double rs, int ord, double *b, double *a)
Расчет передаточной характеристики аналогового нормированного эллиптического ФНЧ.
Definition: filter_ap.c:1538
int farrow_lagrange(double *s, int n, double p, double q, double frd, double **y, int *ny)
Передискретизация вещественного сигнала на основе полиномиальной Лагранжевой интерполяции.
Definition: resampling.c:87
int matrix_eye(double *a, int n, int m)
Генерирование единичной вещественой матрицы размерности n x m.
Definition: matrix.c:153
int verif(double *x, double *y, size_t n, double eps, double *err)
Верификация вещественных массивов
Definition: verification.c:130
int farrow_spline(double *s, int n, double p, double q, double frd, double **y, int *ny)
Передискретизация вещественного сигнала на основе сплайн интерполяции.
Definition: resampling.c:218
int sqrt_cmplx(complex_t *x, int n, complex_t *y)
Квадратный корень из комплексного вектора x (поэлементный).
Definition: math.c:1307
int concat(void *a, size_t na, void *b, size_t nb, void *c)
Конкатенация двух массивов данных
Definition: array.c:315
int sin_cmplx(complex_t *x, int n, complex_t *y)
Синус комплексного аргумента x.
Definition: math.c:849
int freqs(double *b, double *a, int ord, double *w, int n, complex_t *h)
Расчет комплексного коэффициента передачи аналогового фильтра.
Definition: filter_an.c:659
int array_scale_lin(double *x, int n, double xmin, double xmax, double dx, double h, double *y)
Линейное растяжение вектора данных x Функция производит преобразование значений , в значения ,...
Definition: array.c:171
int goertzel_cmplx(complex_t *x, int n, int *ind, int k, complex_t *y)
Алгоритм Гёрцеля для расчета отдельных спектральных отсчетов дискретного преобразования Фурье комплек...
Definition: goertzel.c:263
int ellip_asn(double *w, int n, double k, double *u)
Обратная эллиптическая функция Якоби вещественного аргумента
Definition: ellipj.c:339
int linspace(double x0, double x1, int n, int type, double *x)
Функция заполняет массив линейно-нарастающими, равноотстоящими значениями от x0 до x1
Definition: array.c:1009
int dft_cmplx(complex_t *x, int n, complex_t *y)
Дискретное преобразование Фурье комплексного сигнала.
Definition: dft.c:329
int bessel_i0(double *x, int n, double *y)
Модифицированная функция Бесселя первого рода .
Definition: math.c:386
int mean_cmplx(complex_t *x, int n, complex_t *m)
Выборочная оценка математического ожидания комплексного вектора x
Definition: statistic.c:407
int ellip_cd_cmplx(complex_t *u, int n, double k, complex_t *y)
Эллиптическая функция Якоби комплексного аргумента
Definition: ellipj.c:701
int psd_periodogram(double *x, int n, int win_type, double win_param, fft_t *pfft, double fs, int flag, double *ppsd, double *pfrq)
Непараметрическая оценка спектральной плотности мощности (СПМ) вещественного сигнала методом модифици...
Definition: psd.c:590
int asin_cmplx(complex_t *x, int n, complex_t *y)
Арксинус комплексного аргумента x.
Definition: math.c:271
int cos_cmplx(complex_t *x, int n, complex_t *y)
Косинус комплексного аргумента x.
Definition: math.c:585
int sinc(double *x, int n, double a, double *y)
Функция .
Definition: math.c:936
int ellip_acd_cmplx(complex_t *w, int n, double k, complex_t *u)
Обратная эллиптическая функция Якоби комплексного аргумента
Definition: ellipj.c:211
int ellip_landen(double k, int n, double *y)
Расчет коэффициентов ряда полного эллиптического интеграла.
Definition: ellipj.c:889
int gnuplot_open(void **hplot)
Открыть пакет GNUPLOT.
Definition: gnuplot.c:482
int fir_linphase(int ord, double w0, double w1, int filter_type, int win_type, double win_param, double *h)
Расчет коэффициентов линейно-фазового КИХ-фильтра методом оконного взвешивания.
Definition: filter_fir.c:321
int cheby2_ap_zp(int ord, double rs, complex_t *z, int *nz, complex_t *p, int *np)
Расчет массивов нулей и полюсов передаточной функции аналогового нормированного ФНЧ Чебышёва второго...
Definition: filter_ap.c:1304
int verif_cmplx(complex_t *x, complex_t *y, size_t n, double eps, double *err)
Верификация комплексных массивов
Definition: verification.c:347
int dft(double *x, int n, complex_t *y)
Дискретное преобразование Фурье вещественного сигнала.
Definition: dft.c:163
int gnuplot_create(int argc, char *argv[], int w, int h, char *fn_png, void **hplot)
Создать график GNUPLOT.
Definition: gnuplot.c:200
int cheby2_ap(double rs, int ord, double *b, double *a)
Расчет передаточной характеристики аналогового нормированного ФНЧ Чебышёва второго рода.
Definition: filter_ap.c:1037
int mean(double *x, int n, double *m)
Выборочная оценка математического ожидания вещественного вектора x
Definition: statistic.c:309
int decimate_cmplx(complex_t *x, int n, int d, complex_t *y, int *cnt)
Децимация комплексного вектора данных
Definition: array.c:587
int group_delay(double *pb, double *pa, int ord, int flag, double *w, int n, double *tau)
Расчет группового времени запаздывания цифрового или аналогового фильтра.
Definition: filter_an.c:166
int randb2(double *x, int n, random_t *prnd)
Генерация бинарного биполярного [-1, 1] псевдослучайного вектора
Definition: randgen.c:358