Clear Filters
Clear Filters

Error on filter() - Subscript indices must either be positive integers or logicals

1 view (last 30 days)
I'm trying to use filter() to do a moving average on my data, but I keep getting the error "Subscript indices must either be positive integers or logicals." What's really bothering me is I get the same error when I try running the example on the filter() webpage. Here's the example. It breaks on the y=filter(b,a,x) line.
t = linspace(-pi,pi,100);
rng default %initialize random number generator
x = sin(t) + 0.25*rand(size(t));
windowSize = 5;
b = (1/windowSize)*ones(1,windowSize);
b = [1/5 1/5 1/5 1/5 1/5]
a = 1;
y = filter(b,a,x);
plot(t,x)
hold on
plot(t,y)
legend('Input Data','Filtered Data')

Accepted Answer

Jan
Jan on 14 Dec 2017
Hi Brian, did you see Walter's comment? Most likely the symbol "filter" was overwritten by a variable. Then the builtin function is "shadowed". If this is your problem:
clear filter
and do not use the name of builtin functions for variables in general.
  2 Comments
Bryan Wilson
Bryan Wilson on 14 Dec 2017
Yes! That's exactly right. I had named another variable 'filter.' Changed the variable name and now it works great.

Sign in to comment.

More Answers (0)

Categories

Find more on 2-D and 3-D Plots in Help Center and File Exchange

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!