Matlab中的fminsearch语法

时间:2015-06-24 19:50:56

标签: matlab

我在Matlab中查看了这段代码。有人可以解释第4行(fminsearch)的语法部分 - []表示什么。

function [v_opt]=optdc_fv(Data,dt,x,f,v0)
v_opt=zeros(length(f),1); 
for i=1:length(f)
v_opt(i)=fminsearch(@costf_fv, v0(i), [], Data, dt, x, f(i)); 
end

这里costf_fv是成本函数

function cf=costf_fv(v, Data, dt, x, fi)
[N, Ch]=size(Data); % No. of data, No. of channel
t=[0:dt:(N-1)*dt]';
lamda=v./fi; %  edited part
%  Discrete Time Fourier Transform in time domain
[xx, tt]=meshgrid(x,t);
j=sqrt(-1);
tmp1=exp(-j*2*pi*fi*tt);
tmp2=Data.*tmp1; 
Ui=sum(tmp2); 
% Discrete Space Fourier transform --> velocity domain
tmp1=exp(j*2*pi/lamda*x'); 
tmp2=Ui.*tmp1; 
UUi=sum(tmp2); 
cf=-(abs(UUi)); % f-v Spectrum : edited part

1 个答案:

答案 0 :(得分:1)

我使用fminsearch - 函数进行了一些测试,事实证明,值[]只是一个占位符,而不是写一个任意数字。如果你打电话......

fminsearch(@costf_fv, v0(i), [], Data, dt, x, f(i));

...然后@costf_fv是函数句柄,v0(i)是起点。以下五个参数是函数cost_fv的参数。

fminsearch后面的算法会在每次迭代中调整函数的特定值。此值<{>> cost_fv的第一个参数,正好位于[]的位置。

无论您提供什么值而不是[],它都会被fminsearch覆盖(即使在第一次迭代中)。因此,它被[]替换为明确显示不需要自己提供值。