以n个向量为输入的最小化函数

时间:2019-10-28 17:51:01

标签: matlab optimization vector

我想在MATLAB中最小化一个以n个向量为输入的函数

更准确地说:我在3D空间中有n个点,它们描述了一条闭合曲线,比如说圆。

n = 10;
t = linspace(0,1,10);

x = cos(2*pi*t);
y = sin(2*pi*t);
z = zeros(1,length(2*pi*t));

vec = [x;y;z]
scalar = function my_fun(vec)

因此,表示空间曲线的点由vec(:,1),...,vec(:,n)定义。我的函数取点(vec并计算某种能量,因此输出为标量。

我的问题是我不知道如何设置变量输入以便可以使用fminsearch。想法是,如果可能的话,fminsearch通过改变空间点来找到​​最小值。

1 个答案:

答案 0 :(得分:2)

fminsearch可以优化将任何一个数组作为输入的函数。您的函数采用一个输入参数vec,它是一个2D数组。可以直接对其进行优化:

init = randn(3,n);
answer = fminsearch(my_fun,init);

请注意,使用n=10,您有30个要优化的变量,这很多。这将非常昂贵,并且有可能陷入当地的最低要求。