Skip to content

Commit 1cd82f4

Browse files
committed
Include linear_filter function
Found within .cc file. Only provide the function signature first. This function is called when `a.len() > 1`. Function signature of lfilter is also changed to reflect what zi is expected to be from both lfilter and linear_filter.
1 parent 3b69fa2 commit 1cd82f4

File tree

1 file changed

+20
-3
lines changed

1 file changed

+20
-3
lines changed

sci-rs/src/signal/filter/lfilter.rs

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,8 +137,8 @@ pub fn lfilter<'a, T, S, const N: usize>(
137137
a: ArrayView1<'a, T>,
138138
x: ArrayBase<S, Dim<[Ix; N]>>,
139139
axis: Option<isize>,
140-
zi: Option<Vec<T>>,
141-
) -> Result<(Array<T, Dim<[Ix; N]>>, Option<Vec<T>>)>
140+
zi: Option<ArrayView<T, Dim<[Ix; N]>>>,
141+
) -> Result<(Array<T, Dim<[Ix; N]>>, Option<Array<T, Dim<[Ix; N]>>>)>
142142
where
143143
[Ix; N]: IntoDimension<Dim = Dim<[Ix; N]>>,
144144
Dim<[Ix; N]>: RemoveAxis,
@@ -154,7 +154,7 @@ where
154154
}
155155

156156
if a.len() > 1 {
157-
unimplemented!()
157+
return linear_filter(b, a, x, axis, zi);
158158
};
159159

160160
let (axis, axis_inner) = check_and_get_axis(axis, &x)?;
@@ -206,6 +206,23 @@ where
206206
Ok((out, None))
207207
}
208208

209+
/// Internal function called by [lfilter] for situation a.len() > 1.
210+
fn linear_filter<'a, T, S, const N: usize>(
211+
b: ArrayView1<'a, T>,
212+
a: ArrayView1<'a, T>,
213+
x: ArrayBase<S, Dim<[Ix; N]>>,
214+
axis: Option<isize>,
215+
zi: Option<ArrayView<T, Dim<[Ix; N]>>>,
216+
) -> Result<(Array<T, Dim<[Ix; N]>>, Option<Array<T, Dim<[Ix; N]>>>)>
217+
where
218+
[Ix; N]: IntoDimension<Dim = Dim<[Ix; N]>>,
219+
Dim<[Ix; N]>: RemoveAxis,
220+
T: NumAssign + FromPrimitive + Copy + 'a,
221+
S: Data<Elem = T> + 'a,
222+
{
223+
todo!()
224+
}
225+
209226
#[cfg(test)]
210227
mod test {
211228
use super::*;

0 commit comments

Comments
 (0)