l********r 发帖数: 14 | 1 【 以下文字转载自 Programming 讨论区 】
【 原文由 littledear 所发表 】
偶的具体问题是这样的。
偶有一个sym object, such as:
y=3*x^2+5*x^7
想把系数和阶次取出放到数组里面。
偶能想到的办法是用字符串比较,找'x','*','^'等关键字,然后取出相应的
字符串,然后转换成数。这在c里面应该不难,不知道matlab是否方便?
有更好的办法实现这个吗? | c*v 发帖数: 53 | 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是否方便? : 有更好的办法实现这个吗?
| l********r 发帖数: 14 | 3 我现在觉得作为字符串取出来的确不难。问题在于:
matlab的symbol expression总是把小数写成分数形式,分母分子经常会有几百个数字,
这样
转化成数字(str2num)时超出处理范围了。难道symbol不能是小数形式吗?这样我至少还
可以指定精度什么的。
【在 c*v 的大作中提到】 : should be very easy to identify the number after '*X^'
| r****y 发帖数: 1437 | 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不能是小数形式吗?这样我至少还 : 可以指定精度什么的。
| l********r 发帖数: 14 | 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. :
|
|