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

조회 수: 2 (최근 30일)
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')

채택된 답변

KSSV
KSSV 2020년 6월 7일
편집: KSSV 2020년 6월 7일
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
KSSV
KSSV 2020년 6월 7일
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 2020년 6월 7일
No it wasn't integers. but ok I got it,, Thank you !

댓글을 달려면 로그인하십시오.

추가 답변 (2개)

Image Analyst
Image Analyst 2020년 6월 7일

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

댓글을 달려면 로그인하십시오.

Community Treasure Hunt

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

Start Hunting!

Translated by