Index error when calling filter function
显示 更早的评论
Hello everyone.
I'm trying to write a function to read an audiofile applying it a filter.
I first use audioread function that gives me my (441000x2) signal matrix of n samples in 2 channels/columns. I generate a filter with the ellip function in the [b,a] form.
Now my problem is: A) if I use the command window, i have my 441000x2 (double) signal and my 1x7 (double) vector of the filter transfer function coefficients.
y = filter(b,a,u);
returns me a 441000x2 matrix which actually is the filtered signal. I can plot both channels in the freq. domain and it works.
B) if I call my function, that is more or less like:
%reading (durata)seconds of my file
info = audioinfo(filename_formato);
[y, Fs] = audioread(filename_formato,[1 info.SampleRate * durata]);
ns = size(y,1);
ts = 1/Fs;
%generating time vector
t = linspace(0,ts*ns,ns);
%designing the filter (let's say Fs = 44100Hz, fstop = 1000Hz)
[z,p,k] = ellip(6,0.5,20,fstop/Fs*2);
[b,a] = zp2tf(G.Z{1,1},G.P{1,1},G.K);
y = filter(b,a,u);
I receive the following error message:
" Index in position 1 is invalid. Array indices must be positive integers or logical values.
Error in TOTAL (line 71)
y = filter(b,a,u); "
where TOTAL is the name of the function.
I tried using a for loop to work on one channel at a time but still
y(:,i) = filter(b,a,u(:,i))
works in the command window but gives me the same error when calling TOTAL
Any ideas? thank you very much.
采纳的回答
更多回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Filter Design 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!