Evaluate function handle for each value in vectorized form
Show older comments
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 Comments
Jan
on 1 Jun 2021
Is it really needed to create y?
res{k} = alpha * beta * gamma;
Salomon Roth
on 1 Jun 2021
Jan
on 1 Jun 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
on 2 Jun 2021
Accepted Answer
More Answers (0)
Categories
Find more on Gamma Functions in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!