# How can I nest a function in a function?

2 views (last 30 days)
Barbaros Teoman Kosoglu on 13 Oct 2022
Commented: John D'Errico on 13 Oct 2022
A = zeros(n);
for i=1:n
for j=1:n
A(i,j) = 1/(i+j-1);
end
end
Ainv = A\eye(n);
Eye = eye(n);
end
function A = hilbert(n)
A = zeros(n);
for i=1:n
for j=1:n
A(i,j) = 1/(i+j-1);
end
end
end
I want to nest hilbert function in AD function, since hilbert is actually in AD. But I am getting "Unrecognized function or variable 'A'" error. What can I do here?

Fangjun Jiang on 13 Oct 2022
1.0e-13 * 0 0 0.0089 -0.0711 0 0 0.1421 0.0711 0.0711
A = hilbert(n);
Ainv = A\eye(n);
Eye = eye(n);
end
function A = hilbert(n)
A = zeros(n);
for i=1:n
for j=1:n
A(i,j) = 1/(i+j-1);
end
end
end
##### 2 CommentsShowHide 1 older comment
Fangjun Jiang on 13 Oct 2022
To be clear, hilbert(n) here is a 'local function'. There is no need to make it a 'nested function' based on its content.
See documents for their differences.
I think 'local function' is more suitable in this case.

John D'Errico on 13 Oct 2022
Edited: John D'Errico on 13 Oct 2022
See that I wrote hilbert differently. Feel free to use doubly nested loops there. But why?
As well, NEVER name a function the same thing as a variable in that function!!!!!!!!! NEVER. NEVER. Having said that three times, it must be true. You named the function AD, then returned a variable named AD. A BAD idea.
ans = 5×5
1.0e-11 * 0.0171 0 -0.0071 -0.0099 -0.0099 0.0909 0.0455 0.1592 0.1137 0.1137 -0.3638 -0.3638 -0.1819 -0.1819 -0.3638 0.7276 0.3638 0.3638 0.3638 0.5457 -0.1819 -0.0909 -0.0909 -0.1819 -0.2728
It works.
A = hilbert(n);
Ainv = A\eye(n);
Eye = eye(n);
function A = hilbert(n)
[i,j] = meshgrid(1:n);
A = 1./(i+j-1);
end
end
John D'Errico on 13 Oct 2022
Yes. You tried to call ComputeAD, but I named the function ComputeAd. Sorry about my choice of names.
Case sensitivity triumphs there. MATLAB told you it could not find that function, the clue you needed.

### Categories

Find more on Startup and Shutdown in Help Center and File Exchange

R2022b

### Community Treasure Hunt

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

Start Hunting!

Translated by