Evaluate function handle for each value in vectorized form
Afficher commentaires plus anciens
I initialize a relatively simple function handle that depends on alpha. For simplicity, I will use alpha = 1.
For beta and gamma, I use n=10 random draws, where beta are scalars and gamma are 3 by 1 vectors.
I want to evaluate the function handle for each of the n random draws. This can be achieved e.g. by a for loop.
How can this be achieved in a more Matlab-like (vectorized) way?
Thanks.
alpha = 1;
n=10;
rng default
beta_all = randn(n, 1);
gamma_all = randn(3, n);
res = cell(n, 1);
for k=1:length(res)
beta = beta_all(k);
gamma = gamma_all(:,k);
y = @(alpha) (alpha * beta * gamma);
res{k} = y(alpha);
end
4 commentaires
Jan
le 1 Juin 2021
Is it really needed to create y?
res{k} = alpha * beta * gamma;
Salomon Roth
le 1 Juin 2021
Jan
le 1 Juin 2021
Maybe the problem gets more clear, if you post the real code, not a strongly simplificated version. If you need "alpha +- something", you could use:
res{k} = (alpha + x) * beta * gamma;
Salomon Roth
le 2 Juin 2021
Réponse acceptée
Plus de réponses (0)
Catégories
En savoir plus sur Gamma Functions 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!