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

1 vue (au cours des 30 derniers jours)
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')

Réponse acceptée

KSSV
KSSV le 7 Juin 2020
Modifié(e) : KSSV le 7 Juin 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 commentaires
KSSV
KSSV le 7 Juin 2020
You have used syms but, you have over written the variable. So it no more a symbolic variable. In the present case g has fractions. MATLAN array indices should always be positive integers. May be in the previous case your array might be integers and so it worked.
Ani Asoyan
Ani Asoyan le 7 Juin 2020
No it wasn't integers. but ok I got it,, Thank you !

Connectez-vous pour commenter.

Plus de réponses (2)

Image Analyst
Image Analyst le 7 Juin 2020

Maximilian Schönau
Maximilian Schönau le 7 Juin 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
  2 commentaires
Ani Asoyan
Ani Asoyan le 7 Juin 2020
oh sorry I wrote syms q, but it had to be syms g.... but even in that case I still get that error

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by