Array indices must be positive integers or logical values error

I am trying to perform the following on MATLABIssue on matlab.PNG
However, I keep getting the error which says "Array indices must be positive integers or logical values error"
Please help. Here's my code:
nT=0
for n=0:10000 %part 5
beta=alpha*sqrt(1-((2*n)/N-1)^2);
if abs(n)<= (N-1)/2
syms k x
Ibeta=1+symsum((((1/factorial(k))*(beta/2)^k)^2),k,1,Inf)
Ialpha=1+symsum((((1/factorial(k))*(alpha/2)^k)^2),k,1,Inf)
wk(nT)=Ibeta/Ialpha
nT=nT+1;
else
wk(nT)=0
nT=nT+1;
end
n=n+1;
end
THIS IS THE ERROR I GET:
Array indices must be positive integers or logical values.
Error in DSPproj (line 25)
wk(nT)=Ibeta/Ialpha

 Akzeptierte Antwort

Walter Roberson
Walter Roberson am 16 Mär. 2019

0 Stimmen

You initialize nT to 0. You access wk(nT) but nT is still 0.
You need to move the increments of nT to before you use nT as indices.

2 Kommentare

Hope Damogbe
Hope Damogbe am 16 Mär. 2019
Bearbeitet: Hope Damogbe am 16 Mär. 2019
Ohh, doesnt initializing nT to 0 mean that in the first loop interation, I am setting a value for wk(0) in the wk array?
Because that's what I thought. Correct me if I'm wrong.
**Edit:
Actually I just realized to access the first element of the array I need to use index 1 ( wk(1) ). I was using C++ logic. Thank you for your help, it works now!
Yes, but array indices start at 1 in MATLAB. 0 is not a valid index in MATLAB.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Operators and Elementary Operations finden Sie in Hilfe-Center und File Exchange

Produkte

Community Treasure Hunt

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

Start Hunting!

Translated by