MATLAB: Indexing error using sum

digital signal processingindexingMATLABsignal processingsum

I have written a simple code that performs a moving average smoothing algorithm (it averages n adjacent bins to a single bin similar to Matlab's smooth):
signal = ones(1,30); % Random sample
n=3; % An odd number (filter span)
for i = k : length(signal)-k
NewSignal(i,:) = sum(signal(i-n:i+n,:))/n;
end
However, the second to last line results in the following error:
%Index in position 1 is invalid. Array indices must be positive integers or logical values.
So, what is the cause of this error? And what would be a solution?
Any explanation would be greatly appreciated.

Best Answer

signal(i-n:i+n,:)
%.......^ here is the issue
When you run the code n=3 initial and k=2;
When you assigned i=k:... that menas first value is 2
signal(2-3:2+3,:)...
Which trsult >> signal(-1:5,:)
%.......................^......
Negative and zero index value is not allowed. index value must be positive integer only as stated in error message-
Array indices must be positive integers or logical values. Soln: If you want to use the same expression >>Modify the initial value such a way that k>n, ensure that k value is integer.
Learn array indexing here