How can I nest a function in a function?
Show older comments
function AD = AD(n)
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);
AD = Eye-Ainv*A;
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?
Accepted Answer
More Answers (1)
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.
ComputeAd(5)
It works.
function AD = ComputeAd(n)
A = hilbert(n);
Ainv = A\eye(n);
Eye = eye(n);
AD = Eye-Ainv*A;
function A = hilbert(n)
[i,j] = meshgrid(1:n);
A = 1./(i+j-1);
end
end
3 Comments
Barbaros Teoman Kosoglu
on 13 Oct 2022
Check with
ComputeAd(5)
Matlab is case senstive. You might have used
ComputeAD(5)
This is different function and not present in code you copied
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 Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!