Indexing cannot yield multiple results error

Hello! I have this function:
function [E1x,E2x]=coupler(Eax,Ebx,Npt1)
n=1;
Eout=zeros(Npt1,2);
E1x=zeros(Npt1,1);
E2x=zeros(Npt1,1);
while n<=Npt1
Enew=[Eax(n); Ebx(n)];
c=[sqrt(0.5) 1i*sqrt(0.5);1i*sqrt(0.5) sqrt(0.5)];
Eout(n,:)=c*Enew;
E1x(n)=Eout(n,1);
E2x(n)=Eout(n,2);
n=n+1;
end
end
I am calling this function like this:
[E11x,E22x] = coupler(Eaf1,Ebf1,Npt);
However the error appears: Indexing cannot yield multiple results. What am I doing wrong?
Best regards, João

댓글 수: 4

Please use the {} Code block, selecting all your code first and clicking it, for more readable formatting.
Does the error tell you which line is causing the problem or have you stepped through the code to determine which line?
I can't see anything at a glance that would cause that error unless you have a variable called 'coupler' in which case the error would make sense as trying to index into a variable cannot give two outputs in the line:
[E11x,E22x] = coupler(Eaf1,Ebf1,Npt);
so make sure you do not have a variable stamping on your function name.
...and the best way to detect that possibility is to type:
which coupler -all
in the Command Window. Your function should be the only result you get.
Joao
Joao 2014년 10월 27일
Yes i had another variable called coupler. Many thanks!!
Adam
Adam 2014년 10월 27일
I'll add it as an answer then in case anyone comes to this thread in future with the same problem. I didn't want to put it as an answer first since I wasn't 100% sure if that was the problem.

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

 채택된 답변

Adam
Adam 2014년 10월 27일
편집: Adam 2014년 10월 27일

1 개 추천

Check that you do not also have a variable called 'coupler' which will stop Matlab from being able to see your function.
If you have a variable, 'coupler', then the line:
[E11x,E22x] = coupler(Eaf1,Ebf1,Npt);
will attempt to index into that variable, rather than calling your function, which will result in the error you showed as indexing into a variable cannot return two outputs.
As Star Strider points out, you can type:
which coupler -all
to check if you have a variable called 'coupler'. If you get a variable returned here as well as your function then that is the problem.

댓글 수: 1

Joao replied:
‘Yes i had another variable called coupler. Many thanks!!’

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

추가 답변 (1개)

BHANESH BHADRECHA
BHANESH BHADRECHA 2016년 2월 6일

0 개 추천

That is because you have created any loop and in that loop variable is changing its value every time loop executes.
The best way is to clear variables that are defined in that loop.
clear this variables before the loop ends.....
for example
for i=1:1000 j=stft(x); k=max(j); clear j; clear k; end

카테고리

도움말 센터File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

태그

질문:

2014년 10월 27일

편집:

2016년 2월 6일

Community Treasure Hunt

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

Start Hunting!

Translated by