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

1 Ansicht (letzte 30 Tage)
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')

Akzeptierte Antwort

KSSV
KSSV am 7 Jun. 2020
Bearbeitet: KSSV am 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 Kommentare
KSSV
KSSV am 7 Jun. 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 am 7 Jun. 2020
No it wasn't integers. but ok I got it,, Thank you !

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Image Analyst
Image Analyst am 7 Jun. 2020

Maximilian Schönau
Maximilian Schönau am 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

Kategorien

Mehr zu MATLAB finden Sie in Help Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by