Array indices must be positive integers or logical values.

조회 수: 7 (최근 30일)
Kyle Lazaroff
Kyle Lazaroff . 2019년 12월 11일
댓글: Kyle Lazaroff . 2019년 12월 11일
im not sure why i keep getting this error, if someone could show me how to fix it that would be great. The error is for l_2, i made l_1 and l_2 to see where the error was coming from.
r_d = 1.50e11; % distance from Earth to Sun
r_s = (1.39e9)/2; % radius of the sun
fw =(r_s/r_d)^2;
t_s = 5800; % temp in kelvin
lamda = 0:0.01:3;
h = 6.626e-34; % in J*s
k_b = 1.381e-23; % in J/K
c = 2.998e8; % in m/s
l_1 = (2*pi*h*c.^2)\lamda.^5;
l_2 = 1\exp((h*c)\(lamda*k_b*t_s))-1;
l_sun(lamda) = fw.*l_1.*l_2;

채택된 답변

ME 2019년 12월 11일
I just ran this segment of code and I get the same "Array indices must be positive integers or logical values." error but for the l_sun(lamda) line. The issue there is that in Matlab array indices may only take positive integer values. In your example you are trying to use lamda = 0, 0.1, 0.2... as indices and Matlab is not able to handle them. The line for l_2 runs absolutely fine for me.

추가 답변 (1개)

Bandar 2019년 12월 11일
Indices must be postivie integer. In your code, lambda is a vector that contains non-integers.
lamda = 0:0.01:3;
l_sun(lamda) = fw.*l_1.*l_2; % <-- here is the problem in l_sun(lamda)
  댓글 수: 1
Kyle Lazaroff
Kyle Lazaroff 2019년 12월 11일
how do you convert the lamda vector into integers?

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


Help CenterFile Exchange에서 Operators and Elementary Operations에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by