MatLab可以转换类似
的内容syms t real
2*t^2+5*t+6
到
2.*t.^2+5.*t+6
自动?
示例
syms t real
a=2;
v=int(a,t);
现在v=2*t
所以我想将其转换为v=2.*t
。
答案 0 :(得分:2)
如果您有字符串,则可以使用regexprep
进行替换:
>> str = '2*t^2+5*t+6-3/t'
str =
2*t^2+5*t+6-3/t
>> str = regexprep(str, '([\*\^\/])', '.$1')
str =
2.*t.^2+5.*t+6-3./t
如您所见,这会将所有*
,^
或/
更改为其虚线版本。
如果字符串可能已包含一些虚线运算符,请按如下所示修改正则表达式以避免出现双点:
>> str = '2.*t^2+5*t+6-3./t'
str =
2*t^2+5*t+6-3/t
>> str = regexprep(str, '(?<!\.)([\*\^\/])', '.$1')
str =
2.*t.^2+5.*t+6-3./t
或者,正如@knedlsepp所建议的那样,使用vectorize
函数:
>> str = '2.*t^2+5*t+6-3./t'
str =
2.*t^2+5*t+6-3./t
>> str = vectorize(str)
str =
2.*t.^2+5.*t+6-3./t
如果您有符号功能,请使用matlabFunction
生成anonymous function:
>> syms t real
>> a=2;
>> v=int(a,t)
v =
2*t
>> v = matlabFunction(v)
v =
@(t)t.*2.0
所以现在
>> v(3)
ans =
6