Redian新闻
>
[转载] matlab的字符串处理功能强吗?
avatar
[转载] matlab的字符串处理功能强吗?# Computation - 科学计算
l*r
1
【 以下文字转载自 Programming 讨论区 】
【 原文由 littledear 所发表 】
偶的具体问题是这样的。
偶有一个sym object, such as:
y=3*x^2+5*x^7
想把系数和阶次取出放到数组里面。
偶能想到的办法是用字符串比较,找'x','*','^'等关键字,然后取出相应的
字符串,然后转换成数。这在c里面应该不难,不知道matlab是否方便?
有更好的办法实现这个吗?
avatar
c*v
2
should be very easy to identify the number after '*X^'

【在 l********r 的大作中提到】
: 【 以下文字转载自 Programming 讨论区 】
: 【 原文由 littledear 所发表 】
: 偶的具体问题是这样的。
: 偶有一个sym object, such as:
: y=3*x^2+5*x^7
: 想把系数和阶次取出放到数组里面。
: 偶能想到的办法是用字符串比较,找'x','*','^'等关键字,然后取出相应的
: 字符串,然后转换成数。这在c里面应该不难,不知道matlab是否方便?
: 有更好的办法实现这个吗?

avatar
l*r
3
我现在觉得作为字符串取出来的确不难。问题在于:
matlab的symbol expression总是把小数写成分数形式,分母分子经常会有几百个数字,
这样
转化成数字(str2num)时超出处理范围了。难道symbol不能是小数形式吗?这样我至少还
可以指定精度什么的。

【在 c*v 的大作中提到】
: should be very easy to identify the number after '*X^'
avatar
r*y
4

suppose string
str = 'y =3*x^2+5*x^7'
idx = findstr(str, '*');
ind = findstr(str, '^');
coefficient = str2num(str(idx-1));
power = str2num(str(ind+1));
If your coefficient and power can be real number, needs more
positioning statement.


【在 l********r 的大作中提到】
: 我现在觉得作为字符串取出来的确不难。问题在于:
: matlab的symbol expression总是把小数写成分数形式,分母分子经常会有几百个数字,
: 这样
: 转化成数字(str2num)时超出处理范围了。难道symbol不能是小数形式吗?这样我至少还
: 可以指定精度什么的。

avatar
l*r
5
我现在觉得作为字符串取出来的确不难。问题在于:
matlab的symbol expression总是把小数写成分数形式,分母分子经常会有几百个数字,
这样
转化成数字(str2num)时超出处理范围了。难道symbol不能是小数形式吗?这样我至少还
可以指定精度什么的。
btw,你的算法有个小flaw:
如果某个系数为1,表达式不显示出来,所以需要多些判断语句。

【在 r****y 的大作中提到】
:
: suppose string
: str = 'y =3*x^2+5*x^7'
: idx = findstr(str, '*');
: ind = findstr(str, '^');
: coefficient = str2num(str(idx-1));
: power = str2num(str(ind+1));
: If your coefficient and power can be real number, needs more
: positioning statement.
:

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。