-1

たとえば、関数がある場合:

k=1:100
func=@(s) sum(c(k)-exp((-z(k).^2./s)))

ここで、cとzは同じサイズの行列(たとえば、1x100)ですが、fminsearchを使用して「s」値を見つける方法はありますか?

4

2 に答える 2

0

argminシンボリック関数 を見つけて、配列の最大値と最小値のインデックスを使用したいと思います

また

ARGMAX / ARGMIN by Marco Cococcioni

function I = argmax(X, DIM)
%ARGMAX    Argument of the maximum
%   For vectors, ARGMAX(X) is the indix of the smallest element in X. For matrices,
%   MAX(X) is a row vector containing the indices of the smallest elements from each
%   column. This function is not supported for N-D arrays with N > 2.
%
%   It is an efficient replacement to the use of [Y,I] = MAX(X,[],DIM);
%   See ARGMAX_DEMO for a speed comparison.
%
%   I = ARGMAX(X,DIM) operates along the dimension DIM (DIM can be 
%   either 1 or 2).
%
%   When complex, the magnitude ABS(X) is used, and the angle
%   ANGLE(X) is ignored. This function cannot handle NaN's.
%
%   Example:
%       clc
%       disp('If X = [2 8 4; 7 3 9]');
%       disp('then argmax(X,1) should be [2 1 2]')
%       disp('while argmax(X,2) should be [2 3]''. Now we check it:')
%       disp(' ');
%       X = [2 8 4; 
%            7 3 9]
%       argmax(X,1)
%       argmax(X,2)
%
%   See also ARGMIN, ARGMAXMIN_MEX, ARGMAX_DEMO, MIN, MAX, MEDIAN, MEAN, SORT.

%   Copyright Marco Cococcioni, 2009.
%   $Revision: 1.0 $  $Date: 2009/02/16 19:24:01$

if nargin < 2,
    DIM = 1;
end

if length(size(X)) > 2,
    error('Function not provided for N-D arrays when N > 2.');
end

if (DIM ~=1 && DIM ~= 2),
    error('DIM has to be either 1 or 2');
end

if any(isnan(X(:))),
    error('Cannot handle NaN''s.');    
end

if not(isreal(X)),
    X = abs(X);
end

max_NOT_MIN = 1; % computes argmax
I = argmaxmin_mex(X, DIM, max_NOT_MIN);
于 2013-02-08T18:50:32.903 に答える
0

fminsearch境界条件ではなく、2番目のパラメーターに初期条件が必要です(ただし、一部のオプションは境界をサポートしている場合があります)。

電話するだけ

 fminsearch(func,-0.5)

ベクトルを渡す例を見たのは、複数の係数にわたる多次元検索であり、ベクトルは各係数の初期値でした。検索スペースに制限はありません。

使用することもできます

fminbnd(func, -0.5, 1);

制約付き最小化を実行します。

ただし、合計ではなく、エラーのノルムを最小化する必要があると思います(合計を最小化すると、エラーの大きさが大きくなり、非常に負になります)。

最適化ツールボックスをお持ちの場合は、lsqnonlin便利かもしれません。

于 2013-02-08T18:58:59.340 に答える