How do I create an array of a function output?
94 次查看(过去 30 天)
显示 更早的评论
How do I create an array of a function output? Each attempt I've tried it overwrites the value in the array and returns a 1x1 array with the final value calculated as it's value.
I've seen nested list functions or push functions? Which is the best for the below case and how do I implement it?
Apologies if this is a simplistic question, just struggling with this problem.
My function is:
>> m=0:1:3
>> n=0:1:4
>> for a=m
for b=n
res=ack(a,b)
end
end
function res=ack(m,n)
if m==0
res = n+1;
elseif m>0 && n==0
res = ack(m-1,1);
elseif m>0 && n>0
res = ack(m-1,ack(m,n-1));
end
end
1 个评论
David Fletcher
2018-2-25
编辑:Stephen23
2018-2-26
Essentially your problem is very similar to the answer I provided for
Maybe not the 'best' way to do it, but it is pretty much the answer to the problem you are outlining
采纳的回答
Stephen23
2018-2-26
Method one: nested loops and indexing
m = 0:3;
n = 0:4;
out = nan(numel(m),numel(n));
for km=1:numel(m)
for kn=1:numel(n)
out(km,kn) = ack(m(km),n(kn));
end
end
giving:
out =
1 2 3 4 5
2 3 4 5 6
3 5 7 9 11
5 13 29 61 125
Method two: arrayfun:
>> [M,N] = ndgrid(m,n);
>> out = arrayfun(@ack,M,N)
out =
1 2 3 4 5
2 3 4 5 6
3 5 7 9 11
5 13 29 61 125
2 个评论
Cedrick De Block
2020-11-10
hello excuse me,
in your fist example I have a problem with "ack"
matlab doesn't reconise it, is it a function?
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Matrix Indexing 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!