How can I get multiple values from arrayfun?
Afficher commentaires plus anciens
I have the following sample code.
clear
clc
a = 1:1000;
b = linspace(100,200,1000);
x1 = arrayfun( @(v,w) fminsearch(@(x) (x(1)-v).^2 + (x(2)-w).^2, [1;1]), a, b, 'UniformOutput', false);
So basically, I would like to get x(1) x(2) that minimizes the objective function given a and b.
and x1 returns 1*1000 cells and each of the cells gives me the minimizer.
However, I want to get 21000 double instead of 11000 cells.
Is there any way I can get x1 as 2*1000?
Thanks in advance.
Réponse acceptée
Plus de réponses (2)
Yusuf Suer Erdem
le 8 Nov 2021
clear
clc
a = 1:1000;
b = linspace(100,200,1000);
x1 = arrayfun( @(v,w) fminsearch(@(x) (x(1)-v).^2 + (x(2)-w).^2, [1;1]), a, b, 'UniformOutput', false);
x2 = reshape(x1,2,500);
Try this way, as you see matrix x2 is the same matrix as x1 but in different dimensions. I hope it helps!
a = 1:1000;
b = linspace(100,200,1000);
x1 = cell2mat(arrayfun( @(v,w) fminsearch(@(x) (x(1)-v).^2 + (x(2)-w).^2, [1;1]), a, b, 'UniformOutput', false));
size(x1)
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!