24小时热门版块排行榜    

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

紫百合LYL

至尊木虫 (职业作家)

[求助] 求助一个inline函数的问题

求助哪位高手,我写的一个matlab中inline函数,如下:
f=inline('1000*exp(106470/(8.14*T))*exp(1634.9*583*583/(T^2*(583-T)))','T');
T=300;
p=f(T)
这样运行可以出结果,但我想将第二行改为T=300:100:500,这样可以同时得到T=300,400,500时的求解结果,但这样改了以后运行时就总是报错,显示结果为:
T =

   300   400   500

Error using inlineeval (line 15)
Error in inline expression ==>
1000*exp(106470/(8.14*T))*exp(1634.9*583*583/(T^2*(583-T)))
Matrix dimensions must agree.

Error in inline/subsref (line 24)
    INLINE_OUT_ = inlineeval(INLINE_INPUTS_, INLINE_OBJ_.inputExpr,
    INLINE_OBJ_.expr);

Error in inling2 (line 3)
p=f(T)

不知道问题出在哪,求解。。。。。
回复此楼
人都会长大,你觉得痛苦,那说明你在承受了~
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiegangmai

版主 (职业作家)

我没头衔

优秀版主优秀版主优秀版主

引用回帖:
4楼: Originally posted by 紫百合LYL at 2012-10-13 22:17:04
谢谢指导
但是改完后,运行结果为
T =

   300   400   500


Grow =

  1.0e+031 *

    2.5711    0.0000    0.0000
很显然,T=400和500的时候还是没有运行。。。。...

呵呵,计算了的,你看到的结果后面两个显示为0,别忘了前面的1.0e+031,用format long命令设置一下,再看看你的Grow。
明德厚学、求是创新
5楼2012-10-14 07:59:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 6 个回答

li春龙

木虫 (小有名气)

【答案】应助回帖


感谢参与,应助指数 +1
xiegangmai: 金币+1, 谢谢参与,非应助请勿选择“应助回帖” 2012-10-13 09:31:31
我没接触过MATLAB,着实看不明白,如果300--100--500表示范围为300--500   的话那100表示的会不会是每一次变化的幅度,你把100改小点看是什么结果?纯属个人遐想。

[ 发自手机版 http://muchong.com/3g ]
简单就好,不必自寻烦恼
2楼2012-10-13 07:04:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiegangmai

版主 (职业作家)

我没头衔

优秀版主优秀版主优秀版主

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
紫百合LYL: 金币+5, ★★★很有帮助, 很有帮助,虽然还是有点小问题,可已经很大改善了,谢谢啊 2012-10-13 22:15:32
将第二行改为T=300:100:500;后,T由原来的标量变为数组,所以inline函数里的表达应为对应元素进行相应的运算,需要在运算符前加“.”号。
inline函数修改如下:
CODE:
f=inline('1000.*exp(106470./(8.14.*T)).*exp(1634.9*583*583./(T.^2.*(583-T)))','T');

明德厚学、求是创新
3楼2012-10-13 09:31:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

紫百合LYL

至尊木虫 (职业作家)

引用回帖:
3楼: Originally posted by xiegangmai at 2012-10-13 09:31:17
将第二行改为T=300:100:500;后,T由原来的标量变为数组,所以inline函数里的表达应为对应元素进行相应的运算,需要在运算符前加“.”号。
inline函数修改如下:
f=inline('1000.*exp(106470./(8.14.*T)).*exp(1 ...

谢谢指导
但是改完后,运行结果为
T =

   300   400   500


Grow =

  1.0e+031 *

    2.5711    0.0000    0.0000
很显然,T=400和500的时候还是没有运行。。。。
人都会长大,你觉得痛苦,那说明你在承受了~
4楼2012-10-13 22:17:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见