MATLBA subs指令的功能语法

  1. Source:http://jingyan.baidu.com/article/f0062228d2c5a8fbd3f0c885.html

  2. sub指令的功能语法

        subs能够在符号表达式和符号矩阵中进行置换操作,下面我们就介绍一下它的调用语法规则:

        R=subs(S)  %将表达式S中的所有变量用调用的函数或MATLAB workspace中获得的值进行置换,将置换后的表达式赋给R;

        R=subs(S,new) %用new置换表达式S中的自变量后在赋给R;

        R=subs(S,old,new) %用new置换表达式中的old,然后将置换完的表达式赋给R。

        对于英语学的比较好的人员,可以通过help subs搜索matlab自带的帮助信息进一步学习。下面是用help subs搜索到的subs帮助信息。

    matlab中的通用置换指令subs()用法




  3. 产生待置换的符号函数

        为方便下一步进行符号-符号、符号-数字的置换这一步先生成符号函数,以供后面的置换操作进行调用。需要注意的是在进行新的计算之前先用“clear”清除一下内存空间。生成的符号函数为f = a*sin(x)+b,具体结果如下图所示:

    matlab中的通用置换指令subs()用法




  4. 符号-符号置换

        在这一步,我们先用符号表达式置换符号表达式,演示一下subs的具体功能。上一步生成的符号函数f中有sin(x),这一步我们先用log(y)将其置换。其置换指令为:f1=subs(f,sin(x),'log(y)'),其置换结果如下图所示:

    matlab中的通用置换指令subs()用法




  5. 符号-数字置换:单个变量被双精度数字置换

        从这一步开始就提供了一种符号-数字之间的转换,需要注意的是,当单个变量被双精度数字置换后,其结果仍然是符号对象属性。这一点我们可以用class指令查看结果的类型。这一步的置换代码指令:f2 = subs(f,a,2.886),置换结果如下图显示:

    matlab中的通用置换指令subs()用法




  6. 用数字置换所有变量(含符号数字)

        自这一步中我们将所有变量被数字(至少一个符号数字,例如π在matlab中表示为pi)置换,这个时候我们来看一下结果是否仍为符号对象型的。置换指令代码:

        f3 = subs(f,{a,b,x},{2,5,sym('pi/3')})

        注意这一步里面我们用到了胞元数组,关于胞元数组的用法可以参见我的另外一篇经验《如何使用matlab中的胞元数组》,这里就不再重复介绍了。上面指令的意思是:用2置换a,用5置换b,用sym('pi/3')置换x。下图是运算结果:

    matlab中的通用置换指令subs()用法




  7. 用数字置换所有变量(全为双精度数值数字)

        从上一步可以看出,当进行置换操作时,如果置换数字中含有符号数字,那么计算结果类型也为符号sym类型。那如果全为全为双精度数值数字,那计算结果会是什么类型呢?符号?还是数值?下面我们探究一下就知道了。置换操作的指令代码为:

        f4 = subs(f,{a,b,x},{2,5,pi/3})

        注意这次的pi/3为数值型的数字而非符号型的。具体置换和上一步一样,下面我们看一下具体的结果,如下图所示:

    matlab中的通用置换指令subs()用法




  8. 单个变量被数值数组置换

        在上一步中我们可以得出结论:当所有变量被双精度数值数字置换时,其计算结果也为数值型(double)。现在我们看一下另外一种情况,即一个变量被双精度数组置换,此时计算结果的类型将是什么结果?这里我们就用数组[0,pi/1,pi]来置换变量x,再查看结果类型。其计算代码为:

        f5=subs(f,x,[0,pi/2,pi])

        计算结果如下图所示:

    matlab中的通用置换指令subs()用法




  9. 所有变量被数值数字置换(有一个是数组)

        上面一步的结果从图上很容易就可以看出来了。在这一次计算中,我们将x用数值数组来进行置换,其他变量用单个具体数值来置换查看结果,我们还可以画出置换后函数的图形来看一下。为简便起见我们可以先生成数组存放在一个变量中,然后在置换时调用。具体的置换指令为:

        f6=subs(f,{a,b,x},{1.98,3.45,t})

       其中t为数组,我们可以在置换前用“t=(0:pi/10:4*pi)”指令来生成。计算结果如下图:

    matlab中的通用置换指令subs()用法




  10. 结果函数的图形

        下面画出所有变量被数值数字置换(有一个是数组)后结果函数的图形(用代码“plot(t,f6)”画出):

    matlab中的通用置换指令subs()用法





  11. 两次置换获得双精度数组

        上一步我们只用了一次置换,并且画出了置换结果的图形。下面我们进行两次置换,观察结果和上一步中的一次置换有什么具体的不同。同样我们也画出两次置换结果的图形。具体代码就不写了,可以在图中看。具体置换代码及计算结果如下图所示:

    matlab中的通用置换指令subs()用法




  12. 一次置换和两次置换的结果图

        我们在一张图里面用两个子图画出一次置换和两次置换的结果图,看看他们有什么不同?画出的结果图如下:从图上我们可以看出,一次置换只能产生一条曲线,而两次置换却能产生一次列的曲线,在本次计算的两次置换中共产生了16条曲线。多次置换的这一结果也是subs置换指令在符号表达式双精度数值计算转换中的特殊功用。

    matlab中的通用置换指令subs()用法
    END








注意事项

  • subs的第三个输入量可以是“字符串”(第三步)。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值