Evaluate function handle for each value in vectorized form
显示 更早的评论
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 个评论
Jan
2021-6-1
Is it really needed to create y?
res{k} = alpha * beta * gamma;
Salomon Roth
2021-6-1
Jan
2021-6-1
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
2021-6-2
采纳的回答
更多回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Gamma Functions 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!