How do I create an array of a function output?
79 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
FortuitousMonkey
le 25 Fév 2018
Commenté : Cedrick De Block
le 10 Nov 2020
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 commentaire
David Fletcher
le 25 Fév 2018
Modifié(e) : Stephen23
le 26 Fév 2018
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
Réponse acceptée
Stephen23
le 26 Fév 2018
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 commentaires
Cedrick De Block
le 10 Nov 2020
hello excuse me,
in your fist example I have a problem with "ack"
matlab doesn't reconise it, is it a function?
Plus de réponses (1)
Voir également
Catégories
En savoir plus sur Matrix Indexing dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!