产生随机符号矩阵的问题
这是本人写的一个产生随机符号矩阵的函数,在运行的时候总是产生一些奇怪的字符,比如:(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 编辑 ] 原帖由 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 编辑 ] 谢谢了!
页:
[1]