# Why do I get this error? "indices must either be real positive integers or logicals."

2 views (last 30 days)

Show older comments

hi, why do I get this error ?

Subscript indices must either be real positive integers or logicals.

Error in sev (line 27)

N(g) = (q*b-a*d)./(e*(q^2)+g.*2*a)

here's my code..

syms q

a=2; b=2; d=0.5; e=0.9 ; q=0.4;

g=1:0.1:10

N(g) = (q*b-a*d)./(e*(q^2)+g.*2*a)

i(g)=(b-e*q*N)/a

m=N(g)

n=i(g)

figure(1)

plot (g,m,'b')

hold on

plot (g, n,'red')

##### 0 Comments

### Accepted Answer

KSSV
on 7 Jun 2020

Edited: KSSV
on 7 Jun 2020

You need not to use syms. there is no requirement of syms.

You need not to use indesing N(g), this is not reuqired also this is not valid.

a=2; b=2; d=0.5; e=0.9 ; q=0.4;

g=1:0.1:10

N = (q*b-a*d)./(e*(q^2)+g.*2*a)

i=(b-e*q*N)/a

m=N

n=i

figure(1)

plot (g,m,'b')

hold on

plot (g, n,'r')

##### 3 Comments

KSSV
on 7 Jun 2020

### More Answers (2)

Maximilian Schönau
on 7 Jun 2020

You could use N(g) to create a symbolic function with the symbolic variable g. Since g is not a symbolic variable but a vector, Matlab trys to use the values of g as indices of N, wich does not work.

Use:

N = (q*b-a*d)./(e*(q^2)+g.*2*a)

To create a function N(g) use:

syms g

N(g) = (q*b-a*d)./(e*(q^2)+g.*2*a) % symbolic function

or

N = @(g) (q*b-a*d)./(e*(q^2)+g.*2*a) % function handle

### See Also

### Categories

### Community Treasure Hunt

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

Start Hunting!