Why I'm getting this error( Array indices must be positive integers or logical values)?

M=3
W = [0,0,0]
for n = 0:2000
x = cos(0.03 * pi * n)
stem(n,x)
hold on; % hold the plot
end
b= [1 -2 4];
freqz (b,1)
for n = 0:2000
d=conv(x,b)
y=transpose(W)*x
e=d-y;
w(n+1) = w(n)+(2*0.01*e*[x(n),x(n+1),x(n+2)])% µ=0.01;
end

3 commentaires

Srat the loop indexing from 1.
Which lines is failing? Please post the complete error message, which would clarify this detail.
Array indices must be positive integers or logical values.
Error in untitled3 (line 16)
w(n+1) = w(n)+(2*0.01*e*[x(0),x(1),x(2)])% µ=0.01;

Connectez-vous pour commenter.

Réponses (1)

Jan
Jan le 9 Fév 2023
Modifié(e) : Jan le 9 Fév 2023
When I run your code, it stops with the error, the w is undefined in the line:
w(n+1) = w(n)+(2*0.01*e*[x(n),x(n+1),x(n+2)])% µ=0.01;
But even if w exists in the real code, w(0) is not a valid index in the first iteration, because in Matlab indices start at 1.
x(n) will fail also for n=0. But for n=2 there will be an error again, because the first loop creates a scalar x only.
Another bold guess is, that you have redefined a function as an array, e.g. "cos" or "stem".

Catégories

En savoir plus sur Matrices and Arrays dans Centre d'aide et File Exchange

Produits

Version

R2022b

Tags

Modifié(e) :

Jan
le 9 Fév 2023

Community Treasure Hunt

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

Start Hunting!

Translated by