Change a variable in a function.

Im using the fsolve function inside a loop and there is an integer inside the fsolve function that will change the solution of the fsolve, i want to increment that number each time the loop is conducted, i defined the term in global and gave it a value of 1 intially, then i tried using A=A+1 inside the loop but the fsolve gave me the final answer only to that equation and i tried putting the A=A+1 inside the function but it gave me an error.

답변 (1개)

Nicolas B.
Nicolas B. 2019년 11월 28일

0 개 추천

I never tried with global variables but, in your case, I would recommend you to set your A has an input. What I understand, all variables which are not inputs of the function_handle are set as constant in the function_handle when you define it (but I could be wrong). So I would recommand to define your function handle as:
A = 1;
f = @(in1, in2, A) you_function(in1, in2, A);
while your_condition
f(in1, in2, A);
A = A + 1;
end

댓글 수: 9

Anas Albizreh
Anas Albizreh 2019년 11월 28일
Its telling me Undefined function or variable 'A'.
Nicolas B.
Nicolas B. 2019년 11월 28일
Can you add here your code please?
Anas Albizreh
Anas Albizreh 2019년 11월 28일
I called it C here.
Rik
Rik 2019년 11월 28일
편집: Rik 2019년 11월 28일
This time I edited your comment for you. Next time, please use the tools explained on this page to make your code more readable.
Anas Albizreh
Anas Albizreh 2019년 11월 28일
Sorry im new here.
Anas Albizreh
Anas Albizreh 2019년 11월 29일
Help me please.
Nicolas B.
Nicolas B. 2019년 11월 29일
You should add A to the input of func() and myfunc().
If I could give you a general advice, try to avoid as much as possible the global variables. It makes your script impossible to re-use and difficult to debug.
Anas Albizreh
Anas Albizreh 2019년 11월 29일
Can you tell me how to do it, i tried doing it but it didn't work.
I don't have the optimization toolbox, so I cannot test it, but it should work like that (only the necessary code is shown:
global U Lg L2 L3 L4 L1 Th1 Th2
...
x0 = [deg2rad(145), deg2rad(20)];
x = fsolve(@(x) myfunc(x, A),x0);
...
function F = myfunc(X, A)
global U Lg
thA = X(1);
th2 = X(2);
F(1) = real( U*exp(1i*th2)-A*exp(1i*thA)-Lg );
F(2) = imag( U*exp(1i*th2)-A*exp(1i*thA)-Lg );
end

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

카테고리

도움말 센터File Exchange에서 Function Creation에 대해 자세히 알아보기

제품

릴리스

R2018a

질문:

2019년 11월 28일

댓글:

2019년 11월 29일

Community Treasure Hunt

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

Start Hunting!

Translated by