Declared variable shown as undefined

1 回表示 (過去 30 日間)
Divyayan Dey
Divyayan Dey 2020 年 5 月 23 日
コメント済み: Divyayan Dey 2020 年 5 月 23 日
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

回答 (1 件)

KSSV
KSSV 2020 年 5 月 23 日
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 件のコメント
Stephen23
Stephen23 2020 年 5 月 23 日
"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?
Divyayan Dey
Divyayan Dey 2020 年 5 月 23 日
Thanks. That worked.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeSurrogate Optimization についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by