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
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
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
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?

请先登录,再进行评论。

更多回答(1 个)

Walter Roberson
Walter Roberson 2018-2-25
  1 个评论
FortuitousMonkey
FortuitousMonkey 2018-2-26
Could you help me implement this in my code, please? I am drawing a blank (relatively new to matlab).

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

产品

Community Treasure Hunt

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

Start Hunting!

Translated by