MatLab的可以转换像如何将符号表达式转换为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
。
MatLab的可以转换像如何将符号表达式转换为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
。
如果你有一个串,你可以做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
['vectorize'](http://de.mathworks.com/help/matlab/ref/vectorize.html)! (还处理替换后突然发生的'..') – knedlsepp 2015-04-02 09:34:25
@knedlsepp哦,现在我明白你的意思了! – 2015-04-02 09:47:20
谢谢。你最后的回答正是我所追求的。 – user172675 2015-04-02 09:53:46
是输入'2 * T^2 +5吨+ 6'存储为一个字符串?另外,在输入中不应该是'.5 * t'吗? – Divakar 2015-04-02 09:25:19
@Divakar:我现在编辑了这个问题。 – user172675 2015-04-02 09:33:33
你错过了回答第一个问题。 – Divakar 2015-04-02 09:34:31