wanghuisjtu 发表于 2007-11-26 22:04

如何处理用非线性最小二乘法估计含卷积的函数式子参数

我的问题是对函数式y(x)=(a1*exp(a2*x)-a3*exp(a4*x))⊙fun(x),⊙表示卷积,fun(x)表示一个简单的关于x的函数。我的问题是已知x=,已知函数y和函数fun 在x点的值,我的问题是利用非线性最小二乘法估计参数a1,a2,a3,a4
我编写的程序如下:
%利用NLS计算FDG参数
function E=twoexps04(a,x,y)% remember we must have function return value
%twoexp04.m 计算二乘残差的程序
x=x(:);y=y(:);
y_in=;

%输入函数仿真
y_nls=a(1)*exp(-a(3)*x)-a(2)*exp(-a(4)*x);
Y=conv(y_in,y_nls);%计算估计函数值做卷积
Y=Y(1:20);%Convolution demention is length(A)+LENGTH(B)-1,直接取前20个点计算残差,好像不科学
E=sum((y-Y).^2);%二乘残差

%利用fminsearch进行非线性参数估计,非线性最小二乘法计算fdg参数
%结果非常不好,编程出错,搞不定卷积不考虑卷积的问题,直接与twoexp04.m配对
%直接做卷积没考虑长度问题
%使用办法将本文件y_in和y分别改为输入函数和输出函数,同时将twoexps04中的_y_in公式改掉,然后点击/debug/run即可;
clc;
clear;
x=;%是否取0结果很大不同.为采样时间点
y_in=;%s30的动脉采血值输入函数
y=;
STDY=1;%假定之
a0=;
options=optimset('fminsearch');
options.TolX=0.01;%控制被估计参数的精度
options.Display='off';
a=fminsearch(@twoexps04,a0,options,x,y);%计算二乘残差最小时的系数值

disp('估计的参数是');
disp(a);

现在的问题是 1 我不知道我对卷积的处理是不是正确的,我计算二值残差直接取了前20个点做残差,由于卷积后序列的长度变长
2 NLS的初值敏感怎么处理

wanghuisjtu 发表于 2007-11-28 00:04

如何处理用非线性最小二乘法估计含卷积的函数式子参数

利用变换处理将卷积为乘积,怎么样?
页: [1]
查看完整版本: 如何处理用非线性最小二乘法估计含卷积的函数式子参数