我在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
答案 0 :(得分:1)
我使用fminsearch
- 函数进行了一些测试,事实证明,值[]
只是一个占位符,而不是写一个任意数字。如果你打电话......
fminsearch(@costf_fv, v0(i), [], Data, dt, x, f(i));
...然后@costf_fv
是函数句柄,v0(i)
是起点。以下五个参数是函数cost_fv
的参数。
fminsearch
后面的算法会在每次迭代中调整函数的特定值。此值<{>> cost_fv
的第一个参数,正好位于[]
的位置。
无论您提供什么值而不是[]
,它都会被fminsearch
覆盖(即使在第一次迭代中)。因此,它被[]
替换为明确显示不需要自己提供值。