cv_misc.c
来自「LastWave」· C语言 代码 · 共 1,147 行 · 第 1/2 页
C
1,147 行
assert (signal_size > 0); i = 0; j = part_begin_in_signal; /* * Left border. */ if (j < 0) { tmp_n = -j; k = signal_size + j; _real_copy_ (signal_part + i, signal_data + k, 0, tmp_n - 1); i += tmp_n; j += tmp_n; } /* * Middle. */ tmp_n = min (part_size - i, signal_size - j); _real_copy_ (signal_part + i, signal_data + j, 0, tmp_n - 1); i += tmp_n; j += tmp_n; /* * Right border. */ while (i < part_size) { tmp_n = min (part_size - i, signal_size); _real_copy_ (signal_part + i, signal_data, 0, tmp_n - 1); i += tmp_n; j += tmp_n; } assert (i == part_size); assert (j == part_size+part_begin_in_signal); return;}void_get_part_r_mi_ (real *signal_part, int part_size, real *signal_data, int signal_size, int part_begin_in_signal){ int i; /* Index for signal_part. */ int j; /* Index for signal_data. */ int k; int tmp_n; assert (signal_part != 0); assert (signal_data != 0); assert (part_size > 0); assert (signal_size > 0); i = 0; j = part_begin_in_signal; /* * Left border. */ while (j < 0) { signal_part[i] = signal_data[-j]; i++; j++; } /* * Middle. */ tmp_n = min (part_size - i, signal_size - j); _real_copy_ (signal_part + i, signal_data + j, 0, tmp_n - 1); i += tmp_n; j += tmp_n; /* * Right border. */ while (i < part_size) { /* * Mirrored signal */ tmp_n = min (part_size - i, signal_size); for (k = signal_size - 1; k >= signal_size - tmp_n; k--, i++, j++) { signal_part[i] = signal_data[k]; } /* * Normal signal. */ if (i < part_size) { tmp_n = min (part_size - i, signal_size); _real_copy_ (signal_part + i, signal_data + j, 0, tmp_n - 1); } } assert (i == part_size); assert (j == part_size+part_begin_in_signal); return;}void_get_part_r_pa_ (real *signal_part, int part_size, real *signal_data, int signal_size, int part_begin_in_signal){ int i; /* Index for signal_part. */ int j; /* Index for signal_data. */ int tmp_n; assert (signal_part != 0); assert (signal_data != 0); assert (part_size > 0); assert (signal_size > 0); i = 0; j = part_begin_in_signal; /* * Left border. */ while (j < 0) { signal_part[i] = signal_data[0]; i++; j++; } /* * Middle. */ tmp_n = min (part_size - i, signal_size - j); _real_copy_ (signal_part + i, signal_data + j, 0, tmp_n - 1); i += tmp_n; j += tmp_n; /* * Right border. */ while (i < part_size) { signal_part[i] = signal_data[signal_size - 1]; i++; j++; } assert (i == part_size); assert (j == part_size+part_begin_in_signal); return;}void_get_part_r_0p_ (real *signal_part, int part_size, real *signal_data, int signal_size, int part_begin_in_signal){ int i; /* Index for signal_part. */ int j; /* Index for signal_data. */ int tmp_n; assert (signal_part != 0); assert (signal_data != 0); assert (part_size > 0); assert (signal_size > 0); i = 0; j = part_begin_in_signal; /* * Left border. */ while (j < 0) { signal_part[i] = 0.0; i++; j++; } /* * Middle. */ tmp_n = min (part_size - i, signal_size - j); _real_copy_ (signal_part + i, signal_data + j, 0, tmp_n - 1); i += tmp_n; j += tmp_n; /* * Right border. */ while (i < part_size) { signal_part[i] = 0.0; i++; j++; } assert (i == part_size); assert (j == part_size+part_begin_in_signal); return;}voidcv_get_part_r_ (real *signal_part, int part_size, real *signal_data, int signal_size, int part_begin_in_signal, int border_effect){ assert (signal_part != 0); assert (signal_data != 0); assert (part_size > 0); assert (signal_size > 0); switch (border_effect) { case CV_PERIODIC: _get_part_r_pe_ (signal_part, part_size, signal_data, signal_size, part_begin_in_signal); break; case CV_MIRROR: _get_part_r_mi_ (signal_part, part_size, signal_data, signal_size, part_begin_in_signal); break; case CV_PADDING: _get_part_r_pa_ (signal_part, part_size, signal_data, signal_size, part_begin_in_signal); break; case CV_0_PADDING: _get_part_r_0p_ (signal_part, part_size, signal_data, signal_size, part_begin_in_signal); break; }}void_get_part_c_pe_ (complex *signal_part, int part_size, complex *signal_data, int signal_size, int part_begin_in_signal){ int i; /* Index for signal_part. */ int j; /* Index for signal_data. */ int k; int tmp_n; assert (signal_part != 0); assert (signal_data != 0); assert (part_size > 0); assert (signal_size > 0); i = 0; j = part_begin_in_signal; /* * Left border. */ if (j < 0) { tmp_n = -j; k = signal_size + j; _cplx_copy_ (signal_part + i, signal_data + k, 0, tmp_n - 1); i += tmp_n; j += tmp_n; } /* * Middle. */ tmp_n = min (part_size - i, signal_size - j); _cplx_copy_ (signal_part + i, signal_data + j, 0, tmp_n - 1); i += tmp_n; j += tmp_n; /* * Right border. */ while (i < part_size) { tmp_n = min (part_size - i, signal_size); _cplx_copy_ (signal_part + i, signal_data, 0, tmp_n - 1); i += tmp_n; j += tmp_n; } assert (i == part_size); assert (j == part_size+part_begin_in_signal); return;}void_get_part_c_mi_ (complex *signal_part, int part_size, complex *signal_data, int signal_size, int part_begin_in_signal){ int i; /* Index for signal_part. */ int j; /* Index for signal_data. */ int k; int tmp_n; assert (signal_part != 0); assert (signal_data != 0); assert (part_size > 0); assert (signal_size > 0); i = 0; j = part_begin_in_signal; /* * Left border. */ while (j < 0) { signal_part[i] = signal_data[-j]; i++; j++; } /* * Middle. */ tmp_n = min (part_size - i, signal_size - j); _cplx_copy_ (signal_part + i, signal_data + j, 0, tmp_n - 1); i += tmp_n; j += tmp_n; /* * Right border. */ while (i < part_size) { /* * Mirrored signal */ tmp_n = min (part_size - i, signal_size); for (k = signal_size - 1; k >= signal_size - tmp_n; k--, i++, j++) { signal_part[i] = signal_data[k]; } /* * Normal signal. */ if (i < part_size) { tmp_n = min (part_size - i, signal_size); _cplx_copy_ (signal_part + i, signal_data + j, 0, tmp_n - 1); } } assert (i == part_size); assert (j == part_size+part_begin_in_signal); return;}void_get_part_c_pa_ (complex *signal_part, int part_size, complex *signal_data, int signal_size, int part_begin_in_signal){ int i; /* Index for signal_part. */ int j; /* Index for signal_data. */ int tmp_n; assert (signal_part != 0); assert (signal_data != 0); assert (part_size > 0); assert (signal_size > 0); i = 0; j = part_begin_in_signal; /* * Left border. */ while (j < 0) { signal_part[i] = signal_data[0]; i++; j++; } /* * Middle. */ tmp_n = min (part_size - i, signal_size - j); _cplx_copy_ (signal_part + i, signal_data + j, 0, tmp_n - 1); i += tmp_n; j += tmp_n; /* * Right border. */ while (i < part_size) { signal_part[i] = signal_data[signal_size - 1]; i++; j++; } assert (i == part_size); assert (j == part_size+part_begin_in_signal); return;}void_get_part_c_0p_ (complex *signal_part, int part_size, complex *signal_data, int signal_size, int part_begin_in_signal){ int i; /* Index for signal_part. */ int j; /* Index for signal_data. */ int tmp_n; assert (signal_part != 0); assert (signal_data != 0); assert (part_size > 0); assert (signal_size > 0); i = 0; j = part_begin_in_signal; /* * Left border. */ while (j < 0) { signal_part[i].real = 0.0; signal_part[i].imag = 0.0; i++; j++; } /* * Middle. */ tmp_n = min (part_size - i, signal_size - j); _cplx_copy_ (signal_part + i, signal_data + j, 0, tmp_n - 1); i += tmp_n; j += tmp_n; /* * Right border. */ while (i < part_size) { signal_part[i].real = 0.0; signal_part[i].imag = 0.0; i++; j++; } assert (i == part_size); assert (j == part_size+part_begin_in_signal); return;}voidcv_get_part_c_ (complex *signal_part, int part_size, complex *signal_data, int signal_size, int part_begin_in_signal, int border_effect){ assert (signal_part != 0); assert (signal_data != 0); assert (part_size > 0); assert (signal_size > 0); switch (border_effect) { case CV_PERIODIC: _get_part_c_pe_ (signal_part, part_size, signal_data, signal_size, part_begin_in_signal); break; case CV_MIRROR: _get_part_c_mi_ (signal_part, part_size, signal_data, signal_size, part_begin_in_signal); break; case CV_PADDING: _get_part_c_pa_ (signal_part, part_size, signal_data, signal_size, part_begin_in_signal); break; case CV_0_PADDING: _get_part_c_0p_ (signal_part, part_size, signal_data, signal_size, part_begin_in_signal); break; }}/* */voidset_f_l_exact (int *first_exact_ptr, int *last_exact_ptr){ int i_begin; int i_end; switch (flt_def) { case ANALYTICAL: if (flt_scale == CV_NO_SCALE) { i_begin = (int) floor (flt_d_begin); i_end = (int) ceil (flt_d_end); } else { i_begin = (int) floor (flt_d_begin*flt_scale); i_end = (int) ceil (flt_d_end*flt_scale); } *first_exact_ptr = (int) i_end; *last_exact_ptr = sig_n + (int) i_begin - 1; break; case NUMERICAL: *first_exact_ptr = (int) flt_d_end; *last_exact_ptr = sig_n + (int) flt_d_begin - 1; break; }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?