声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4622|回复: 8

[编程技巧] 新手求教:inline函数的用法

[复制链接]
发表于 2007-1-20 15:45 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
使用inline时候有点不解。
刚开始都好:
ff=inline('x^2','x')
ff =
     Inline function:
     ff(x) = x^2
>> ff(5)
ans =
    25
但是如果加了一个“a”,我想让a是一个变量,或是参数。下面就有问题了。。。
ff=inline('x^2+a','x')
ff =
     Inline function:
     ff(x) = x^2+a
>> ff(5)
??? Error using ==> inlineeval
Error in inline expression ==> x^2+a
??? Undefined function or variable 'a'.

Error in ==> E:\Matlab\toolbox\matlab\funfun\@inline\subsref.m
On line 25  ==>     INLINE_OUT_ = inlineeval(INLINE_INPUTS_, INLINE_OBJ_.inputExpr, INLINE_OBJ_.expr);

这是怎么回事啊.......
回复
分享到:

使用道具 举报

发表于 2007-1-20 17:14 | 显示全部楼层

回复

试试如下形式:
%%%%%%%%%%%%
ff=inline('x^2+a','x','a')
%%%%%%%%%%%%
 楼主| 发表于 2007-1-20 17:56 | 显示全部楼层
不太行啊,"a"老是有问题:
ff=inline('x^2+a','x','a')
ff =
     Inline function:
     ff(x,a) = x^2+a
>> ff(5)
??? Error using ==> inline/subsref
Not enough inputs to inline function.
>> ff(5,a)
??? Undefined function or variable 'a'.
发表于 2007-1-20 18:38 | 显示全部楼层

回复

你想做什么? 请先把问题讲清楚一些.
 楼主| 发表于 2007-1-20 19:46 | 显示全部楼层
初始目的是解决  m=solve('x^2-1','x')
                            m=solve('x^2-2,'x')
                            m=solve('x^2-3,'x')等等好几个方程,实际方程复杂些。

就想用个a代替, m=solve('x^2+a','x'),再想法把a赋值为-1,-2,-3...
                                                          因为具体方程复杂些,干脆就弄个ff=inline('x^2+a','x'),想用ff代替,省得写
这样就能写成       m=solve('ff(x)','x').   
    这都是理想
    但是出错了,在使用      ff(x)    时候就出现上面的问题。

其实, 不用ff代替,m=solve('x^2+a','x')就没问题
m =

[  (-a)^(1/2)]
[ -(-a)^(1/2)]
发表于 2007-1-20 19:53 | 显示全部楼层

回复

那直接用一个循环就行了.
另:如果用inline定义函数,可用 feval计算函数值.
 楼主| 发表于 2007-1-21 00:18 | 显示全部楼层
原帖由 xjzuo 于 2007-1-20 19:53 发表
那直接用一个循环就行了.
另:如果用inline定义函数,可用 feval计算函数值.



哦,可又出一个问题,solve函数的:
>>a=-9
a =
   -9
>> m=solve('x^2+a','x')
m =
[  (-a)^(1/2)]
[ -(-a)^(1/2)]             这个a还是a,完全无视我在前面的说明:a=-9
                                a值老是代不进去,希望得到具体数值的解,不带a的,该怎么办?
发表于 2007-1-21 09:16 | 显示全部楼层

回复

你没有设置成string类型,当然不认a;
建议将你的原问题传上来,否则浪费很多时间(拐弯抹角).
 楼主| 发表于 2007-1-21 09:54 | 显示全部楼层
果然这样,solve(x^2+a)不加引号
就解决了,真是谢谢啦

    于是献上珍藏的一条搞笑手机短信
              人间四悲:金榜题名时,他人
                            洞房花烛夜,不举
                            久旱逢甘霖,一滴
                            他乡遇故知,借钱
              人间四霉:尿尿茨一鞋
                            喝汤洒一怀
                            擦腚抠破纸
                            放屁嘣出屎
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-12 03:48 , Processed in 0.061971 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表