matlab 怎么提取符号变量中的值
答案:2 悬赏:60 手机版
解决时间 2021-02-10 15:35
- 提问者网友:浪荡绅士
- 2021-02-10 07:40
matlab 怎么提取符号变量中的值
最佳答案
- 五星知识达人网友:第四晚心情
- 2021-02-10 08:32
用subs(W)把符号表达式里面的符号量用当前工作区中的同名变量替换,也就是你所要的赋值了。 其实任何矩阵的元素都可以直接作为变量来使用。能否作为变量的唯一判断标准就是它是否能够放在赋值符号(=)的左边。
全部回答
- 1楼网友:怀裏藏嬌
- 2021-02-10 09:16
1、syms命令是创建多个符号变量的简捷写法,
syms a b positive相当于
a = sym('a','positive');
b = sym('b','positive');所以,这种写法,a和b都是正的。
2、如果只想声明b是正数,那就考虑分开写:
syms a
syms b positive但是,如果先syms a b,经过一系列操作后,再声明syms b positive,也是有效的(但很显然只对声明为正之后的操作有效)。下面是一个例子:
>> syms b
>> dt=sym('dirac(t-b)')
dt =
dirac(t-b)
>> laplace(dt)
ans =
laplace(dirac(-t+b),t,s)
>> syms b positive
>> laplace(dt)
ans =
exp(-b*s)值得特别指出的是,clear b并不会清除b的positive属性,例如在上面的代码后面,如果再进行下面的操作:
>> clear b
>> laplace(dt)
ans =
exp(-b*s)
>> syms b real
>> laplace(dt)
ans =
exp(-s*b)-exp(-s*b)*heaviside(-b)
>> syms b unreal
>> laplace(dt)
ans =
laplace(dirac(-t+b),t,s)也就是说,除非用命令改变b的属性(或者用clear mex或clear all之类的做法强制重启符号计算内核),前面声明的positive或real属性会一直有效。
3、2011b之前的matlab,对符号变量的限定只有三种选择:复数(unreal,默认),实数(real),或者正数(positive),因而无法实现你希望b>=0的要求。2012a引入了三个函数:assume、assumealso和assumptions,可以对符号变量属性进行更多的限定,可以实现你的上述要求。更详细的信息请查阅这几个函数的文档。
4、据我所知,evalin用于指定在特定工作区内执行指定的命令(主要的作用在于从函数中访问基本工作区),像楼上所说的借助它对符号变量“进行更细腻的操作”则是闻所未闻。
希望对楼主有帮助,有问题可追问。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯