function and indexing errors
이전 댓글 표시
hello a newest askig help
i have a function to calculate in a loop a variable
function Ls= WeLatente(WeSolFin,Lc,Ds)
Ls=0;
k=6;
for k=1:k
Ls(k)=Ls(k)+WeSolFin(k)'*Lc*Ds;
end
and i get 2 errors messages
Not enough input arguments.
and
Error in WeLatente (line 6)
Ls(k)=Ls(k)+WeSolFin(k)'*Lc*Ds;
any help i'll appreciate
채택된 답변
추가 답변 (2개)
Walter Roberson
2018년 12월 21일
1 개 추천
you are trying to run the code by just clicking the green run button . When you click that button the function is run without passing in any parameters . you need to go down to the command line and invoke the function passing in appropriate parameters .
When you click on the run button , MATLAB will not look in the base workspace to try to find variables of the same name as the parameters .
댓글 수: 8
Hichem Younsi
2018년 12월 21일
편집: Hichem Younsi
2018년 12월 21일
Image Analyst
2018년 12월 21일
What values did you pass in for (WeSolFin,Lc,Ds?
For example, did you do
>> Ls= WeLatente([1,2,3,4,5,6], 99, 333)
My guess is, no, you did NOT pass in any values for your input arguments.
Hichem Younsi
2018년 12월 22일
Hichem Younsi
2018년 12월 22일
Walter Roberson
2018년 12월 22일
now show us the command you use to run the code
Hichem Younsi
2018년 12월 24일
Walter Roberson
2018년 12월 24일
is the error ont the command where i run it.
Yes. As we have told you before, when you click on the green Run button, MATLAB will not look in your workspace to find variables named in the function. Every function has its own set of variable names that are only meaningful within the function and do not refer to any other function's variables (exception: nested functions with shared variables.)
You need to go to the command line and command
Ls = WeLatente(WeSolFin, Lc, Ds);
That will allow it to take the variables WeSolFin and Lc and Ds from the base workspace and pass their values in to the function, which will attempt to use them.
You will then run into the problem that your code does
Ls(k)=Ls(k)+WeSolFin(k)'*Lc*Ds;
but your WeSolFin is a table() object, and indexing a table object at k using () indexing is not going to work, and if it worked it would not return a numeric value that could be added. What you probably need is to invoke,
Ls = WeLatente(WeSolFin{:,:}, Lc, Ds);
Note that this is the same thing that madhan told you to do in https://www.mathworks.com/matlabcentral/answers/436868-function-and-indexing-erros?s_tid=prof_contriblnk#answer_353555 but you missed seeing that because you ASKED THE SAME QUESTION TWICE and the discussion got split.
madhan ravi
2018년 12월 24일
편집: madhan ravi
2018년 12월 24일
+1 This explanation will sort out the error beautifully...
Hichem Younsi
2018년 12월 24일
카테고리
도움말 센터 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
