cdf2rdf函数问题
我在编程过程中有这样一个语句=eig(jacoA);
=cdf2rdf(evects,evalue);
运行后老是提示错误,但我看不出原因,哪位高手给看看,不胜感激
错误提示如下,我的程序名是qiujie
??? Function 'find' is not defined for values of class 'sym'.
Error in ==> find at 39
= builtin('find', varargin{:});
Error in ==> cdf2rdf at 19
i = find(imag(diag(d))');
Error in ==> qiujie at 69
=cdf2rdf(evects,evalue)
回复 楼主 kangarooli 的帖子
个人水平专业有限, 无法从你的帖子中得到你的问题的完整信息, 不能确定判断出错原因:loveliness:find里头的d是否为sym?
回复 沙发 ChaChing 的帖子
前两个错误提示不是我程序里的,只有第三个才是我程序里的语句,应该说的是cdf2rdf的源程序吧,我就是这不明白,d应该就是指所求的的特征值 呵呵,MATLAB的错误提示机制是由内到外逐步提示,先提示直接发生错误的地方,然后顺藤摸瓜提示外层哪个函数调用引起的这个错误,然后这样一层层外推,从LZ给的错误信息来看,LZ程序qiujie第69行=cdf2rdf(evects,evalue)引发了错误,cdf2rdf第19行调用了find,而find不支持符号类型的查找。综上分析得出的结论:qiujie里面定义了一些符号变量,evects或evalue是符号型的,请改成数值型。
回复 地板 rocwoods 的帖子
谢谢,看了你的回答很受益,但是我求出的特征值和特征向量都是数值的啊!如下evects =
[ -.2003-1.566*i, -.2003+1.566*i, .2180, .7613]
[ .6427+1.521*i, .6427-1.521*i, -2.109, .7772]
[ .2589+.8416e-1*i, .2589-.8416e-1*i, -.2140e-2, -.2919]
[ 1.849+3.373*i, 1.849-3.373*i, -6.379, .4653]
evalue =
[ -2.815, 0., 0., 0.]
[ 0., -.9570e-5+.7971*i, 0., 0.]
[ 0., 0., -9.185, 0.]
[ 0., 0., 0., -.9570e-5-.7971*i]
cdf2rdf就是使复数特征值以实数块的形式显示,我发现特征值如下显示的话就没问题,可以运行,下面是我自己输的,这是怎么回事呢
evalue =
[ 0+.7971*i, 0., 0., 0.]
[ 0., 0-.7971*i, 0., 0.]
[ 0., 0., -2.815, 0.]
[ 0., 0., 0., -9.185] ...evects =
[ -.2003-1.566*i, -.2003+1.566*i, .2180, .7613]
[ .6427+1.521*i, .6427-1.521*i, -2.109, .7772]
[ .2589+.8416e-1*i, .2589-.8416e-1*i, -.2140e-2, -.2919]
[ 1.849+3.373*i, 1.849-3.373*i, -6.379, .4653]
...
如此显示就是sym
试比较两者差异
syms x; aa=, bb=
回复 6楼 ChaChing 的帖子
你说的例子我能明白,但我的那个里面没有系统量!都是数值啊!那个e也是系统十进制显示,怎么会是sym呢,请指点
回复 7楼 kangarooli 的帖子
用isnumeric检查下吧!回复 8楼 ChaChing 的帖子
奇怪,返回值怎么会是假呢,不解,都是数怎么还返回零呢,真诚的感谢各位,很长知识,谢谢回复 9楼 kangarooli 的帖子
不是请楼主详细比较下, 两者输出型式的差异!:loveliness:syms x; aa=, bb=; bb(2,1)=3
注意下, 那些[]符号
页:
[1]