calling a function n times

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]);

Réponses (2)

Walter Roberson
Walter Roberson le 3 Sep 2011

1 vote

for k=1:10
y(k) = myfun();
end

2 commentaires

john birt
john birt le 3 Sep 2011
that produced an error
??? In an assignment A(I) = B, the number of elements in B and
I must be the same.
Error in ==> rubbish2 at 2
t(k) = rubbish();
Walter Roberson
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

Connectez-vous pour commenter.

Andrei Bobrov
Andrei Bobrov le 3 Sep 2011

0 votes

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

Catégories

En savoir plus sur Entering Commands dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by