matlab如何得到符号表达式中某一部分项的系数
mip版 关注:238 答案:2 悬赏:0
解决时间 2021-01-19 05:05
已解决
2021-01-18 14:17
syms t1 t2 t3;
y=4*sin(t1)*cos(t2)+cos(t1)+sin(t1)*sin(t2)+5*sin(t1)*cos(t2)*sin(t3);
如何得到'sin(t1)*cos(t2)'的系数表达式(4+5*sin(t3))?
最佳答案
2021-01-18 14:35
%从符号表达式中提取某一项的系数
%symExpr为符号表达式,item为字符串目标项
%coef为item的符号表达式系数
function coef=getCoefFromSymExpr(symExpr,item)
charExpr=char(symExpr);
indexItem=strfind(charExpr,item); %获取存在item项的指标
indexPseudo=union(strfind(charExpr,['(',item]),strfind(charExpr,[item,'^'])); %获取伪指标
indexItem=setdiff(indexItem,indexPseudo); %获取真正的item指标
%循环计算各个item位置的系数
itemLen=length(item);
exprLen=length(charExpr);
coef=sym(0);
for i=1:length(indexItem)
index=indexItem(i); %计算当前item项的位置
cache=sym(1); %存储当前项的系数
if index~=1 && charExpr(index-1)=='*'
indexFront=index-2; %初始化系数项的前指标
while indexFront~=1 && charExpr(indexFront-1)~=' '
indexFront=indexFront-1;
end
cache=cache*sym(charExpr(indexFront:index-2));
end
if index+itemLen~=exprLen && charExpr(index+1)=='*'
indexBack=index+2; %初始化系数项的后指标
while indexFront+itemLen~=exprLen && charExpr(indexBack+1)~=' '
indexBack=indexBack+1;
end
cache=cache*sym(charExpr(index+2:indexBack));
end
coef=coef+cache;
end
end
全部回答
1楼
2021-01-18 15:54
你说的应该是多项式的系数吧,试试sym2poly,查看用法help sym2poly
一般表达式的系数似乎不可用
我要举报
如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
点此我要举报以上信息!
推荐资讯
大家都在看