필터 지우기
필터 지우기

Array indices must be positive integers or logical values.

조회 수: 4 (최근 30일)
BioZ
BioZ 2020년 6월 3일
댓글: BioZ 2020년 6월 4일
Hello everyone, I am new to Matlab and just learning at the moment.
I am trying to calculate a polynomial and then graph it, but I gent an error "Array indices must be positive integers or logical values." on line 23
would appreciate any help
Thank you!
clear
Cd0=0.01
K=0.02
W = 80000
S = 50
q=0.6
dH = 0.1
Hm = 12
H = 0:dH:Hm;
Pol1 = zeros(4,2);
Pol4 = zeros(4,2);
Pol = K*W^2
q = zeros(1,length(H));
q(1) = 1;
for n=2:length(H)
q(n) = (20-dH(n-1))/(20+dH(n-1));
Pol4(n) = Cd0(0.5*1.225*q(n)*50)^2;
Pol1(n) = ((-1.225*q(n))^2*0.5*50);
r =roots([Pol4(n) 0 0 Pol1(n) Pol])
end
  댓글 수: 1
madhan ravi
madhan ravi 2020년 6월 3일
There are lots of bugs , answers below points only one of the mistakes.

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

채택된 답변

Bjorn Gustavsson
Bjorn Gustavsson 2020년 6월 3일
Most likely you want to multiply Cd0 with the expression in the parenthesis, you try to index the variable with the value of (0.5*1.225*q(n)*50); Try:
Pol4(n) = Cd0*(0.5*1.225*q(n)*50)^2;
HTH

추가 답변 (1개)

Hank
Hank 2020년 6월 3일
편집: Hank 2020년 6월 3일
In the line:
Pol4(n) = Cd0(0.5*1.225*q(n)*50)^2;
what you wrote says to index Cd0 at 0.5*1.225*q(n)*50, which is probably not an integer. I think you want to multiply by Cd0 like this
Pol4(n) = Cd0 * (0.5*1.225*q(n)*50)^2;
You're also going to have trouble indexing the scalar value like you are: dH(n-1). Maybe you mean H(n-1)?
  댓글 수: 2
Hank
Hank 2020년 6월 3일
As I'm continuing to attempt to fix and run the code. More problems are popping up and I'm left wondering what you're trying to simulate here?
BioZ
BioZ 2020년 6월 4일
During a cruise speed, aircrafts can have so called min a max available cruise speed. It's easy to solve for jet engine as it is just a quadratic but for prop engines it is a x^4 polynomial, therefore best to solve it via computational method. It should produce 2 real numbers and 2 imaginary values and when we reach abosolute ceiling 4 imaginary values should appear. My code was intended to solve that until 4 imaginary numbers or max alt specified was reached. then plot it against altitude I fixed the code already, but thank you very much for help! :)

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

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

제품


릴리스

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by