MATLAB Answers

Declared variable shown as undefined

3 views (last 30 days)
Divyayan Dey
Divyayan Dey on 23 May 2020
Commented: Divyayan Dey on 23 May 2020
I have a cost function hybrid_cost() defined for optimization. Howver, with N defined, the function hybrid_cost() on running shows -
Undefined function or variable 'N'
Even after declaring N as global, the problem persists.
N=4;
function cost=hybrid_cost(x)
cost=0;
T1=0;
q=zeros(N);
q(1,1)=x(1);
q(N,N)=x(2);
M=create_M(x);
Ai=M+q;
A=zeros(N);
for i=1:P
A=Ai+eyes(size(M,1))*st(i);
c=abs(cof(A,1,N))^2;
T1=T1+c;
end
T1=4/(q1*qn) * T1;
cost=T1;
end

  0 Comments

Sign in to comment.

Answers (1)

KSSV
KSSV on 23 May 2020
N=4;
function cost=hybrid_cost(x,N)
cost=0;
T1=0;
q=zeros(N);
q(1,1)=x(1);
q(N,N)=x(2);
M=create_M(x);
Ai=M+q;
A=zeros(N);
for i=1:P
A=Ai+eyes(size(M,1))*st(i);
c=abs(cof(A,1,N))^2;
T1=T1+c;
end
T1=4/(q1*qn) * T1;
cost=T1;
end
The variable N, should be passed to a function as shown above. Though you have defined the variable outside the function, it cannot be found inside the function unless you declare N as gloabal variable.

  5 Comments

Show 2 older comments
Divyayan Dey
Divyayan Dey on 23 May 2020
Why does the problem persist with global declaration of variables? I won't be able to parameterize every function with nesting because that would make my code too lengthy.
Stephen Cobeldick
Stephen Cobeldick on 23 May 2020
"I won't be able to parameterize every function with nesting"
There are two methods shown in the documentation for parameterizing functions: nested functions and anonymous functions. Have you tried using anonymous functions as the documentation shows?

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!