我想在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
通过改变空间点来找到最小值。
答案 0 :(得分:2)
fminsearch
可以优化将任何一个数组作为输入的函数。您的函数采用一个输入参数vec
,它是一个2D数组。可以直接对其进行优化:
init = randn(3,n);
answer = fminsearch(my_fun,init);
请注意,使用n=10
,您有30个要优化的变量,这很多。这将非常昂贵,并且有可能陷入当地的最低要求。