(1)程序设计programming:abort:中断计算说明:abort命令中断当前计算并给出Scilab的提示符(“--”)。如果用户使用pause命令进入高层界面,可使用abort命令回到初始层界面,出现Scilab的提示符(“--”)。Ans:计算结果说明:如果表达式的值没有被赋与任何变量,那么Scilab自动产生一个变量Ans,用来存储当前表达式的值。backslash(\):矩阵左除调用格式:如x=A\b说明:backslash(\)代表矩阵左除,x=A\b是方程A*x=b的解。如果A是一个方阵或者可逆矩阵(nonsingular或者invertible),那么x=A\b是方程A*x=b的唯一确定的解,且等于x=inv(A)*b.(通俗的说,就是方程数目等于未知数个数,所以解唯一。如A=[121;322;231],b=[8;13;11])如果A不是一个方阵,那么x是最小二乘解,此时,该解x使norm(A*x-b)最小。(通俗的说,就是方程数目不等于未知数个数。如果方程数目大于未知数个数,本来是没有准确解的,但可以根据最小二乘法原理拟合出最佳解。如A=rand(3,2);b=[1;1;1]。此时,由于A不是一个方阵,无法使用inv(A)命令,因此x=A\b等效于x=pinv(A)*b.如果方程数目小于未知数个数,应该有无穷个解,用x=A\b命令得出的解只是其中的一个解,而用pinv(A)*b命令得出的解则比较粗糙,没有用x=A\b命令得出的解精确。)如果A是一个列满秩矩阵(矩阵的秩等于列数),那么此最小二乘解x=A\b是唯一能使norm(A*x-b)最小的解。如果A不是一个列满秩矩阵,那么此最小二乘解x=A\b不能使norm(A*x-b)最小,使norm(A*x-b)最小的解应该是x=pinv(A)*b)。inv(A)要求A是方阵,pinv(A)则不要求A是方阵bool2s:将布尔矩阵转化为0、1矩阵调用格式:bool2s(x)参数:x是一个布尔向量或者布尔矩阵或者常数矩阵。说明:如果x是一个布尔矩阵,bool2s(x)返回一个0、1矩阵,1代表真,0代表假。如果x是一个普通矩阵,bool2s(x)也返回一个0、1矩阵,1代表非0的数字。boolean:它表示Scilab对象或者布尔型变量和操作符与或非&|~说明:布尔型变量为%T(代表真)%F(代表假)。这些变量可以用来定义矩阵。布尔型型矩阵可以像普通矩阵操作,如元素的抽取、插入与连接,但不能进行如(+,*,-,^,)等运算,布尔型型矩阵有三个特殊的操作符号:与或非&|~brackets括号:包括左右圆括号(),左右方括号[].方括号调用格式:[a11,a12,...;a21,a22,...;...]圆括号调用格式:[s1,s2,...]=func(...)参数a11,a12,...:任何合适的矩阵(实数,多项式,有理数等);参数s1,s2,...:任何变量名;说明:[]用于向量定义或者矩阵连接或者用在调用函数的左边存储变量,而()用于函数调用。[]在用于矩阵连接时,空格、逗号用来隔开每“行”中的元素,分号、回车则用来隔开各“行”。[]用在调用函数的左边存储变量时,必须用逗号隔开个变量。break-结束循环说明:在for或者while循环中,break命令强制结束循环试试看k=0;while1==1,k=k+1;ifk100thenbreak,end;endcall-FortranorC用户程序调入调用格式有两种长型[y1,...,yk]=call(ident,x1,px1,tx1,...,xn,pxn,txn,out,[ny1,my1],py1,ty1,...,[nyl,myl],pyl,tyl)短型[y1,....,yk]=call(ident,x1...,xn)参数说明:ident:字符串,代表所要调用的子程序的名字。Xi:实数矩阵或者字符串,代表输入变量pxi,pyi:整数,代表各输入变量在调入ident程序时的相对位置txi,tyi:字符”d””r”“c”“i”,代表输入变量的数据类型,d代表双精度型,r代表实型(浮点型),c代表字符型,I代表整型。Out:关键词,用来格开输入变量于输出变量。当有Out时,表明是长型调入,而没有Out是短型调入.[ny1,my1]是输出变量的大小功能说明:call命令用于在scilab于调入FortranorC用户程序,所要调入的程序应该预先与scilab链接,链接的方法如下:1.软链接:在scilab进程中使用命令link链接2.硬链接:先用scilab下已有的程序(default/Ex-fort.f)作为调入程序,再在文件(default/Flist)中增加一个入口,然后再使用命令makebin/scilex与scilab连接.call语句有两种调用形式,长型与短型.短型调用语法简单,能够很快地编译代码,但必须写一个小小的C或者F接口程序.长型调用则不需要,但语法复杂,代码解释速度也比较慢.例子:C语言//简单的C语言f1=['#includemath.h''voidfooc(c,a,b,m,n)''doublea[],*b,c[];''int*m,*n;''{''inti;''for(i=0;i(*m)*(*n);i++)''c[i]=sin(a[i])+*b;''}'];//定义一个字符串矩阵,9行1列mputl(f1,'fooc.c')//将字符串矩阵f1写成一个ascii文件fooc.cilib_for_link('fooc','fooc.o',[],c)//创建一个共享库(含gateway,Makefile和loader)execloader.sce//载入共享库a=[1,2,3;4,5,6];b=%pi;[m,n]=size(a);//变量初赋值//输入变量//aisinposition2anddouble//b3double//n4integer//m5integer//输出变量//cisinposition1anddoublewithsize[m,n]c=call(fooc,a,2,d,b,3,d,m,4,i,n,5,i,out,[m,n],1,d);注意:运行以上程序,无论是在window下还是在linux下都会出错,在语句ilib_for_link('fooc','fooc.o',[],c)处出错.case-判断语句的关键词说明:用在选择语句select...case中的关键词:用法如下:select表达式0case表达式1then程序1,case表达式2then程序2,...case表达式3then程序3,[else程序],end例子:while%tdon=round(10*rand(1,1))//产生一个随机数n,selectncase0then//如果该随机数为0,则显示0disp(0)case1thendisp(1)//如果该随机数为1,则显示1elsebreak//如果该随机数为其他值,则中断程序endendclearglobal-清除全局变量调用格式:clearglobal()该命令清除所有全局变量clearglobalnam1..namn该命令清除指定全局变量clearglobal('nam1',..,'namn')该命令清除指定全局变量其中nam1..namn为有效的全局变量例子:globalabca=1;b=2;c=3;who('global')clearglobalbwho('global')clear-清除变量调用格式cleara说明:这个命令用来清除不受保护的变量.cleara清除指定变量a,而clear清楚所有不受predef保护的变量.正常情况下,受保护的变量是指标准库程序和带有百分号的变量,如%pi,%t等.注意语法格式.是cleara而不是clear(a).也要注意a=[]并没有清楚a,而是把a置空.colon-(:)冒号操作符说明:该操作符可以用来生成implicitvectors(不好翻译,看下面的例子就明白了)j:k生成一个向量[j,j+1,...,k](如果jk则为空集).j:d:k生成一个向量[j,j+d,...,j+m*d].该操作符可以用来挑选向量或者矩阵中的某一行,某一列或者某一个元素A(:)是指A中的元素按从左到右从上到下的顺序排成的一列.A(:,j)是指A中的第j列元素.A(j:k)是指[A(j),A(j+1),...,A(k)]A(:,j:k)是指[A(:,j),A(:,j+1),...,A(:,k)]A(:)=w是指用w将矩阵A填满.comma-(,)列,指令与参数分隔符说明:该操作符用来分隔函数中的参数,或者用来分隔单行矩阵中的列,空格也可以用来分隔单行矩阵中的列,但用逗号更加合适.另外也可以用来分隔指令,分号;也可以用来分隔指令,但不会将结果显示在屏幕上.例子:a=[1,2,3;4,5,6];a=1,b=1;c=2comments-注释注释行以//开始,它不会为scilab所编译continue-控制语句中的关键词,使程序转向下一个循环.说明:在for和while循环中,命令continue使程序转向下一个循环,而忽略该次循环中continue语句和end语句之间的指令.例子1:fork=1:10,K=k;ifk2&k=8thencontinue,disp('hello'),end,k,end例子2:forj=1:2x=[];fork=1:10,ifkj+1&k=8thencontinue,end,x=[x,k];endxendDate–显示当前时间命令调用格式:date或者date()或者date()或者dt=date()说明:dt=date()返回一个以格式dd-mmm-yyyy表明时间的字符串。debug–调试级别调用格式:debug(level-int)或者level-int=debug()参数:level-int代表一个0-4的整数。说明:对于不同的整数,代表了不同的调试级别。definedfields–返回列表变量中已定义元素的索引调用格式:k=definedfields(l)参数:l是一个列表变量(可以是list,tlist或者mlist类型),k是返回的索引向量。说明:如果l是一个列表变量(listtlistmlist)那么k=definedfields(l)返回的k是列表变量中已定义元素的索引,如果元素未定义,则返回一个错误信息。例子:l=list(1);l(3)=5k=definedfields(l)运行结果:k=1.3.//因为只定义了第一个和第三个元素,所以只返回他们的索引1和3t=tlist('x');t(5)=4definedfields(t)运行结果:k=1.5.//因为只定义了第一个和第五个元素,所以只返回他们的索引1和5dot-(.)符号调用格式:如123.33a.*b等说明:该操作符号可用来标志小数点,如3.25和0.001,还可以用来和其他符号组成运算符,比如,可以和(*/\^')组成(.*,.^,./,.\,.')运算符,比如C=A./B表示c(i,j)=a(i,j)/b(i,j),克乃内克乘积为“.*.”。注意当(.)符号紧接着一个数字时,它总是表示这个数字的小数点,比如说2.*x就表示2.0*x,而2.*x则表示(2).*x(.)符号的另一个用法是当一行末尾有两个或者两个以上的小数点的时候就表示这一行没有完成,有待继续。do-循环语句的关键词一般与while连用,也可用for语句中elseif:if-then-else语句中的关键词else:if-then-else语句中的关键词empty-([])空矩镇阵符号[]产生一个空矩阵,它的定义很特别,0行0列,也就是说size([])=[0,0].根据该属性就有下面的结果:[]*A=A*[]=[][]+A=A+[]=A[[],A]=[A,[]]=Ainv([])=[]det([])=cond([])=rcond(