24小时热门版块排行榜    

查看: 4121  |  回复: 15
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

meifangh

新虫 (小有名气)

[求助] matlab 拟合一个复数函数的系数。求思路,感觉没法解决 已有2人参与

function [OT DT] = hemomodel(omega, tc, tv, phi_a, phi_c, phi_v)
S0 = 0.98;
T0 = 2.3;
alpha = 0.8;
O = S0*T0/(phi_a+phi_c+phi_v) ...
    *(phi_a + phi_c*(exp(-alpha*tc+1j*omega*tc)-1)./(-alpha*tc+1j*omega*tc) ...
      + phi_v*(exp(1j*omega*tv)-1)./(1j*omega*tv).*exp(-alpha*tc+1j*omega*tc));
T = T0/(phi_a+phi_c+phi_v) ...
    *(phi_a + phi_c*(exp(1j*omega*tc)-1)./(1j*omega*tc) ...
      + phi_v*(exp(1j*omega*tv)-1)./(1j*omega*tv).*exp(1j*omega*tc));
D = T - O;
OT = O./T;
DT = D./T;
(初始值的话。可以尝试这个。tc=0.5,tv=1,phi_a=0.005,phi_v=0.005,phi_c=0.015)
上面的是一个复数函数。我有实验数据OT,DT。现在需要的是通过已知的OT,DT数据进行拟合函数中系数的tc,tv,phi_a,phi_v,phi_c. 拟合出来的系数必须是实数。
我是从一片文献中看到的论文,他们是使用matlab中的函数lsqcurvefit进行拟合的。我本人用此函数拟合的时候遇到了2个问题。
1.lsqcurvefit函数对复数函数拟合,出现的复数。此函数的系数是有物理意义的,不可能是复数,我不知道怎么调试...
2.lsqcurvefit函数一次只能拟合一条函数。而OT,DT显然是相互关联的,如果分开你和OT,DT的话,拟合的参数结果不一样。

小弟拜托大家了,我自己拟合了很久了.还是不行啊!!@laosam280
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

meifangh

新虫 (小有名气)

送红花一朵
引用回帖:
2楼: Originally posted by chenyuwen at 2016-05-14 23:33:48
为什么不把实部虚部分开,然后去拟合?

大神能不能给个具体的思路

发自小木虫Android客户端
3楼2016-05-15 01:59:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 16 个回答

chenyuwen

金虫 (正式写手)

为什么不把实部虚部分开,然后去拟合?

发自小木虫Android客户端

» 本帖已获得的红花(最新10朵)

2楼2016-05-14 23:33:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chenyuwen

金虫 (正式写手)

那你最好能把函数的具体形式写出来,用类似公式编辑器

发自小木虫Android客户端
4楼2016-05-15 09:24:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
试试1stOpt吧,可以直接进行复数拟和,夜不需要猜初值。

[ 发自手机版 http://muchong.com/3g ]
5楼2016-05-15 13:44:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见