# Array indices must be positive integers or logical values.

18 ビュー (過去 30 日間)
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.
clear
clc
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 2019 年 12 月 11 日
how do you convert the lamda vector into integers?

サインインしてコメントする。

### Community Treasure Hunt

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

Start Hunting!