原帖由 roumots 于 2007-2-16 15:29 发表
这是本人写的一个产生随机符号矩阵的函数,在运行的时候总是产生一些奇怪的字符,比如:(0)+(-1)*sqrt(-1)
怎么回事情??
function out=symand(in1,in2)
syms a b c d e f g h i j k l m n o p q r s t u v ...
这是由于matlab自动把'i','j','pi','inf','nan','eps'等特殊字母不当成符号变量造成的,其中(0)+(-1)*sqrt(-1) 就是i、j作为虚数单位的值。另外,如果in2 > 26,你的程序会出现索引越界,因此应完善一下以及避免。改进后如下:
- function out=symrand(in1,in2)
- syms a b c d e f g h ii jj k l m n o p q r s t u v w x y z
- go = [a b c d e f g h ii jj k l m n o p q r s t u v w x y z];
- ind = round(rand(in1)*(in2-1)+1);
- out = go(mod(ind,length(go)));
- out(out == 'ii') = 'i';
- out(out == 'jj') = 'j';
复制代码
[ 本帖最后由 eight 于 2007-2-16 16:13 编辑 ] |