How to fill a cell with function handles using iteration numbers?
6 次查看(过去 30 天)
显示 更早的评论
I am trying to create N functions that are all extremely similar, except they use different constants from an N sized array.
I have a cell G = {}, but I'm not sure how to create a for loop that would set G{1} = @(x) c(1)*x (this is an example, not the actual function), where c is an array containing the constants cooresponding to each function.
I tried placing G{k} = @(x) c(k)*x and iterating k from 1 to N, but that creates functions that contain k, and not the actual iteration number 1, 2,...N.
采纳的回答
Steven Lord
2020-8-5
c = (1:10).^2;
G = cell(size(c));
for whichElement = 1:numel(c)
G{whichElement} = @(x) c(whichElement)*x;
end
Yes, when you display each element of G the expression that gets displayed will include whichElement. But the anonymous function remembers the value whichElement (and c for that matter) had when it was defined and will use those values when the anonymous function is evaluated.
G{7}(5) % 49*5 = 245
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!