matlab表达式部分项求和,matlab如何得到符号表达式中某一部分项的系数

matlab如何得到符号表达式中某一部分项的系数

mip版  关注:238  答案:2  悬赏:0

解决时间 2021-01-19 05:05

5f647f7337686764bb1c7c7e262e403c.png

已解决

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))?

最佳答案

4c3d29760c99dbcbe3ee391afdf663a8.png

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

全部回答

9b9c55bf5295a11fbfdd79b7bbe392cb.png

1楼

2021-01-18 15:54

你说的应该是多项式的系数吧,试试sym2poly,查看用法help sym2poly

一般表达式的系数似乎不可用

我要举报

如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

点此我要举报以上信息!

推荐资讯

大家都在看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值