calling a function n times
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
say I have a function called myfun which has no arguments but returns a number, and I call it and assign the value to 'y', like
y=myfun()
now say I want to call it 'n' times to get a vector 'y' with 'k' entries. Ive tried
k=(1:10);
y(k)=myfun();
but this does not work, what do I do?
p.s. my exact function code is
function [critical_region] = rubbish()
Y=sort(randn(50000,100));
Z=zscore(Y);
n = size(Y,1);
j = 1:n;
result = -n-(1/n)*sum(bsxfun(@times,j.'*2-1, log(normcdf(Z,0,1))+log(1-normcdf(Z(end:-1:1,:),0,1))));
critical_region = prctile(result,[85, 90, 95, 97.5, 99]);
0 commentaires
Réponses (2)
Walter Roberson
le 3 Sep 2011
for k=1:10
y(k) = myfun();
end
2 commentaires
Walter Roberson
le 3 Sep 2011
Your initial description said that the function returns a number, but it does not: it returns a vector of numbers. Adjusting for that, and with the premise that it will always return the same number of elements:
for k=1:10
y(k,:) = myfun();
end
Andrei Bobrov
le 3 Sep 2011
function critical_region = yourfun
Y=sort(randn(500,10));
Z=zscore(Y);
q=size(Y);
result = -q(1)-(1:2:q(1)*2)*(log(normcdf(Z,0,1))+log(1-normcdf(Z(q(1):-1:1,:),0,1)))/q(1);
critical_region = prctile(result,[85, 90, 95, 97.5, 99]);
end
for i1 = 10:-1:1
y(i1,:) = yourfun;
end
0 commentaires
Voir également
Catégories
En savoir plus sur Resizing and Reshaping Matrices dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!