matlab对符号函数赋值——subsinline@
matlab⾥⾯的符号函数通常指的是⽤syms创建出来⼀个变量,然后对这些变量进⾏的运算。⽐如:
syms x
y=x.^2
matlab可以⽐较⽅便地对⼀个符号函数求导或者积分,傅⾥叶变换拉普拉斯变换等。但是经过运算完成后有时候是需要把运算得到的结果转化回矩阵进⾏后续的操作的,这个时候就需要通过⼀个矩阵对符号函数赋值从⽽达到转化出来⼀个新的矩阵。
subs
这个函数常⽤的情况下有三个参数,⽤⽐较通俗的数学语⾔来说,就是函数、⾃变量、⼀个数字(你要把哪个数字赋值给这个符号函数)。
当然除了数字还可以是字符,如果格式匹配的话,上⾯只是举个例⼦。
具体调⽤的时候就是像下⾯这样
y1=subs(y,x,10);
这就是将10赋值给符号函数的⼀种情形,同样也可以⽤矩阵进⾏赋值,这样就可以还原出这个符号函数对应的矩阵。
t=0:0.01:10;
y1=subs(y,x,t);
inline
这个函数据说是可以使⽤,不过在matlab 2017a的版本上调⽤的时候出现了下⾯的情况
它说未来会删除,但是毕竟现在还是没有删除的嘛,那么就强⾏调⽤⼀下……
结果……结果……
命令⾏窗⼝打印出了⽆数的东西……没错,,⼀包辣条都吃完了程序居然还没有跑完,就这么⼀句。所以只好点上⾯的停⽌调试按钮……路过的⼤神万望指点,或者matlab2017以上真的已经不能⽤了。
matlab求导
@
@不是⼀个函数,⽽是matlab⾥⾯的⼀种操作,叫做定义匿名函数。
命令⾏⾥⾯写下这样的函数会看到这样的结果,嗯,这是⼀个函数的句柄。
调⽤的时候就像这样
这给⼈⼀种怎样的感觉?我们平时⾟⾟苦苦写好的函数通常都要⽣成.m⽂件,留着以后使⽤,毕竟只使⽤⼀次的函数略微淡化了函数存在的价值。
但是这个函数呢,这个函数是⼀个句柄,定义好了之后它是当前变量空间⾥⾯的⼀个变量,可以通过圆括号给它赋值获得回传的结果。然后,当matlab关闭了之后,这样定义好了的⼀个变量就不再存在了。
这样看起来,平常使⽤的函数像是家庭保姆,⽽匿名函数像是临时来的保洁阿姨。但是匿名函数有它本⾝的优点,最显⽽易见的就是⽅便。其它优点以后补充。。。
然⽽,,它并不能解决在开头提到的那个问题。⽐如定义了⼀个这样的匿名函数
其中y就是上⾯定义过的y。然后调⽤匿名函数
这印证了我们对于匿名函数的误会。它内部的函数结构是需要在定义函数的时候当场指定的,⾥⾯的x指的就是⾚裸裸的后⾯的x,y⾥⾯蕴含的x它是不会管的。所以我们最开始那种思路,先对符号函数进
⾏某些运算,最后再通过匿名函数转换,这种思路是⾏不通的。
所以,最后似乎只有subs可以解决问题,不过匿名函数的潜在功能更强⼤,只不过在这个问题上并不如subs优越