# HEEELP : Index in position 2 is invalid. Array indices must be positive integers or logical values. !!!! why???

조회 수: 3(최근 30일)
ezgi ünlü 17 Jan 2020
답변: Steven Lord 17 Jan 2020
Hello, this is my code as you can see;
opticaxis=[];
center=(length(y))/2;
for i=1:length(lambda)
opticaxis(i,:)=E_z(:,center,i)'/(max(E_z(:,center,i)));
end
mesh(x/(1e-6),lambda/(1e-6),opticaxis)
view(2)
colormap jet
ax = gca;
ax.YDir = 'normal'
title('GRIN with Plane Wave')
xlabel('x(um)')
ylabel('\lambda(um)')

로그인 to comment.

### 답변(2개)

Steven Lord 17 Jan 2020
center=(length(y))/2;
for i=1:length(lambda)
opticaxis(i,:)=E_z(:,center,i)'/(max(E_z(:,center,i)));
end
If y is a vector with an odd number of elements (as an example let's say y has 3 elements) you're asking for an element of E_z that doesn't exist (in the 3 element example, you're asking for elements in the 1.5th column of E_z.)
If y is not a vector, you probably shouldn't be using length. Use size and ask for the size of y in a specified dimension.

#### 댓글 수: 0

로그인 to comment.

for i = 0:length(lambda)
Within your for loop you are attempting to create a new variable "opticaxis". You cannot define the opticaxis(0,:) point during the first index of your for loop. Try replacing your starting index value with a 1 insted of 0 (example below). This may not solve your problem just yet, but should get you closer. Also, what is the value of length(lambda)?
for i = 1:length(lambda)

#### 댓글 수: 1

ezgi ünlü 17 Jan 2020
hello, thanks for your answer, i already write for i = 1:length(lambda) but yes, it is not solve my problem as you said. lambda is variant number, not constant about between 2.5 and 5. lambda is defined in the file.

로그인 to comment.

이 질문에 답변하려면 로그인을(를) 수행하십시오.