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 w x y z
go=;
for ii=1:1:in1
    for jj=1:1:in1
      out(ii,jj)=sym(go(round((in2-1)*rand+1)));
    end
end

[ 本帖最后由 eight 于 2007-2-16 16:09 编辑 ]

eight 发表于 2007-2-16 16:11

原帖由 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 = ;
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 编辑 ]

roumots 发表于 2007-2-16 17:17

谢谢了!
页: [1]
查看完整版本: 产生随机符号矩阵的问题