Incorrect use of the function zeros().

I have tried the following piece of script and got problems related to the use of zeros():
X = X(:);
N = length(X);
measurement_values(n)= zeros(1,tau); % tau=20
for n = 1:tau
y_tau=zeros(1,N/tau); % Line 27 ---> Error appears here.
for j = 1:N/n
y_tau(j) = mean(X(((j-1)*n+1):j*n));
end
measurement_values(n) = SampEn(y_tau,r,m);
end
Error report:
Error using zeros Size inputs must be integers.
Error in MSE (line 27) y_tau=zeros(1,N/tau);
Is there a way to fix the problem?
I checked the tutorial but still could not solve the problem.
Many thanks,
Massilon

 Accepted Answer

Stephen23
Stephen23 on 31 May 2017
Edited: Stephen23 on 31 May 2017
As the error message clearly states, the inputs to zeros must be integer values (e.g. 0, 1, 2, ...). With your code you are supplying a fractional value of N/tau:
y_tau = zeros(1,N/tau)
which does not make any sense because how many zeros would you expect from, for example:
zeros(1,2.5)
???
The solution is to ensure that you supply integer values to zeros.

2 Comments

Hi Stephen, thanks for your answer. Yes, I agree completely. This code is not my own code. Surely, something is missing. I have thought to use the ceil(). But then there is a problem caused by too many arguments. Is there still a way of using the function ceil()? Many thanks, Massilon
y_tau = zeros(1,ceil(N/tau))

Sign in to comment.

More Answers (0)

Categories

Tags

Community Treasure Hunt

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

Start Hunting!