It seems that the gpuArray implementation of the filter function doesn't support lag terms with multiple input channels.
For example, the cpu implementation works just fine:
B = 0.5;A = [1, -0.5];X = (randn(100,4));Zi = X(1,:);Y = filter(B, A , X , Zi);
However, Once I try the gpu implementation,
B = 0.5;A = [1, -0.5];X = gpuArray(randn(100,4));Zi = X(1,:);Y = filter(B, A , X , Zi);
I get the following error:
Error using gpuArray/filterInitial conditions must be a vector of lengthmax(length(a),length(b))-1, or an array with theleading dimension of size max(length(a),length(b))-1and with remaining dimensions matching those of x.
Alternatively, the gpu approach does work with multiple channels if I insert [] for the lag term.
Any ideas?
Best Answer