57 RandIterOut c_end_iterator,
58 IterT input_begin_iterator,
59 IterT input_end_iterator,
62 const constantsT lamda)
65 typedef typename std::iterator_traits<RandIterOut>::value_type out_elemT;
73 if (z1 == 0 && z2 == 0)
75 IterT current_input_iterator = input_begin_iterator;
76 for (RandIterOut current_iterator = c_begin_iterator;
77 current_iterator != c_end_iterator && current_input_iterator != input_end_iterator;
78 ++current_iterator, ++current_input_iterator)
79 *current_iterator = (out_elemT)(*current_input_iterator);
85 typedef std::vector<out_elemT> c_vector_type;
86 c_vector_type cplus(c_end_iterator - c_begin_iterator), cminus(c_end_iterator - c_begin_iterator);
87 std::vector<constantsT> input_factor_for_cminus(1, -z1), pole_for_cplus(1, -z1), pole_for_cminus(1, -z1);
90 std::vector<constantsT> input_factor_for_cplus(1, (constantsT)1);
92 *(cplus.begin()) = detail::cplus0(
93 input_begin_iterator, input_end_iterator, z1,
static_cast<constantsT
>(.00001), 0);
95 IIR_filter(cplus.begin(),
99 input_factor_for_cplus.begin(),
100 input_factor_for_cplus.end(),
101 pole_for_cplus.begin(),
102 pole_for_cplus.end(),
105 *(cminus.end() - 1) =
static_cast<out_elemT
>((*(cplus.end() - 1) + (*(cplus.end() - 2)) * z1) * z1 / (z1 * z1 - 1));
106 IIR_filter(cminus.rbegin(),
110 input_factor_for_cminus.begin(),
111 input_factor_for_cminus.end(),
112 pole_for_cminus.begin(),
113 pole_for_cminus.end(),
116 RandIterOut current_iterator = c_begin_iterator;
117 typename c_vector_type::const_iterator current_cminus_iterator = cminus.begin();
118 for (; current_iterator != c_end_iterator && current_cminus_iterator != cminus.end();
119 ++current_iterator, ++current_cminus_iterator)
121 *current_iterator =
static_cast<out_elemT
>(*current_cminus_iterator * lamda);
elemT sum(IterT start, IterT end, elemT init)
Compute the sum of a sequence using operator+=(), using an initial value.
Definition more_algorithms.inl:52
void BSplines_coef(RandIterOut c_begin_iterator, RandIterOut c_end_iterator, IterT input_begin_iterator, IterT input_end_iterator, const constantsT z1, const constantsT z2, const constantsT lambda)
compute BSpline coefficients that gives the BSpline that interpolates the given data
Definition BSplines_coef.inl:56