필터 지우기
필터 지우기

Accessing value of a variable inside a function

조회 수: 266 (최근 30일)
Mahith Madhana Kumar
Mahith Madhana Kumar 2020년 12월 30일
댓글: Mahith Madhana Kumar 2020년 12월 31일
I have a variable, " c " defined outside a function as shown (just an example):
c=5;
function sum = add(a, b)
sum = a+b+c
end
Calling the add function by giving inputs for a, b Matlab throws an error saying : Local function name must be different from the script name. I want the value of the variable "c" to be accessed within the function so that if I give input of (2,3) for (a,b) I should be getting an output of sum = 10. Everything works fine if the variable " c " is inside the function but doesnt work when its outside the function. I tried to globally define the variable "c" like:
global c
c=5;
function sum = add(a, b)
global c
sum = a+b+c
end
But still Mathlab throws an error. Can anybody help me with this?
  댓글 수: 1
Stephen23
Stephen23 2020년 12월 30일
I suspect that you should be parameterizing the function:
Avoid global variables, they cause more problems than they solve.

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

채택된 답변

Image Analyst
Image Analyst 2020년 12월 30일
The global case should not throw an error. However you should not use sum or add as the name of your variables since they're already built-in functions. Is the function in the same m-file as the script? When I do this, all in the same m-file, it works fine:
global c
c=5;
s = myAddition(10, 20)
function theSum = myAddition(a, b)
global c
theSum = a+b+c
end
So, does that work for you? If not, what did you do differently?
  댓글 수: 2
Mahith Madhana Kumar
Mahith Madhana Kumar 2020년 12월 30일
Is the function in the same m-file as the script? - Sorry I didnt understand this part. Were you asking whether my code is saved with the same name as that of the function? If so, yes - the m-file name was add.m
Image Analyst
Image Analyst 2020년 12월 30일
Do not call it add.m. That could cause a problem with the other built-in add functions. So rename it and upload/attach it here. If it's essentially the same as mine, it should run fine.

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

추가 답변 (1개)

Walter Roberson
Walter Roberson 2020년 12월 30일
편집: Walter Roberson 2020년 12월 30일
When you define a script, and you define a function inside the script, then the name of the function cannot be the same as the name of the script.
Also, when you define a variable in a script, functions defined in the script do not have access to the variable. Shared variables are possible only with nested functions.
I suggest that you read
  댓글 수: 9
Stephen23
Stephen23 2020년 12월 31일
편집: Stephen23 2020년 12월 31일
Evidently using global variables does not help.
Pass the data reliably as input/output arguments or via nested functions.
Mahith Madhana Kumar
Mahith Madhana Kumar 2020년 12월 31일
ok. I can try that.
Thanks

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

카테고리

Help CenterFile Exchange에서 Workspace Variables and MAT-Files에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by