scilab中文帮助手册

scilab中文帮助手册

本文转自:Scilab 中文教育推廣 http://groups.google.com/group/ade-scilab .......

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=[1 2 1;3 2 2;2 3 1],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 :将布尔矩阵转化为01矩阵
调用格式:bool2s(x)
参数:x是一个布尔向量或者布尔矩阵或者常数矩阵。
说明:如果x是一个布尔矩阵,bool2s(x)返回一个01矩阵,1代表真,0代表假。如果x是一个普通矩阵,bool2s(x)也返回一个01矩阵,1代表非0的数字。
boolean
:它表示Scilab对象或者布尔型变量和操作符 与或非& | ~
说明:布尔型变量为%T(代表真)%F (代表假)。这些变量可以用来定义矩阵。布尔型型矩阵可以像普通矩阵操作,如元素的抽取、插入与连接,但不能进行如( +, *, -, ^, )等运算,布尔型型矩阵有三个特殊的操作符号:与或非& | ~
brackets
括号:包括左右圆括号(),左右方括号[].
方括号调用格式:[a11,a12,...;a21,a22,...;...]
圆括号调用格式: [s1,s2,...]=func(...)
参数a11,a12,... : 任何合适的矩阵 (实数, 多项式, 有理数等);
参数s1,s2,... : 任何变量名;
说明:[ ]用于向量定义或者矩阵连接或者用在调用函数的左边存储变量,而()用于函数调用。[ ]在用于矩阵连接时,空格、逗号用来隔开每中的元素,分号、回车则用来隔开各[ ] 用在调用函数的左边存储变量时,必须用逗号隔开个变量。
break -
结束循环
说明:在for 或者 while 循环中,break命令强制结束循环
试试看k=0; while 1==1, k=k+1; if k > 100 then  break, end; end

callFortran or C 用户程序调入
调用格式有两种
长型 [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于调入Fortran or C 用户程序,所要调入的程序应该预先与scilab链接,链接的方法如下:
1.
软链接:scilab进程中使用命令link链接
2.
硬链接:先用scilab下已有的程序(default/Ex-fort.f)作为调入程序,再在文件(default/Flist)中增加一个入口,然后再使用命令make bin/scilexscilab连接.
call
语句有两种调用形式,长型与短型.短型调用语法简单,能够很快地编译代码,但必须写一个小小的C或者F接口程序.长型调用则不需要,但语法复杂,代码解释速度也比较慢.
例子:C语言
//
简单的C语言
    f1=['#include <math.h>'
        'void fooc(c,a,b,m,n)'
         'double a[],*b,c[];'
         'int *m,*n;'
         '{'
         '   int i;'
         '   for ( i =0 ; i < (*m)*(*n) ; i++) '
         '     c[i] = sin(a[i]) + *b; '
         '}'];//
定义一个字符串矩阵,91
 mputl(f1,'fooc.c')
//
将字符串矩阵f1写成一个ascii文件fooc.c
ilib_for_link('fooc','fooc.o',[],"c") 
//
创建一个共享库(gateway, Makefile loader)
exec loader.sce
//
载入共享库
a=[1,2,3;4,5,6];b= %pi;[m,n]=size(a);
//
变量初赋值
     //
输入变量
    // a is in position 2 and double
    // b                3     double
    // n                4     integer
    // m                5     integer
    //
输出变量
    // c is in position 1 and double with size [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  表达式0
case   
表达式1   then  程序1,
case   
表达式2   then  程序2,
...
case   
表达式3   then  程序3,
[else
程序],
end

例子:

while %t do
  n=round(10*rand(1,1))     //
产生一个随机数n,
  select n     
  case 0 then               //
如果该随机数为0,则显示0    
    disp(0)
  case 1 then
    disp(1)                 //
如果该随机数为1,则显示
  else
    break                   //
如果该随机数为其他值,则中断程序
  end
end

clearglobal - 清除全局变量
调用格式:
clearglobal()                      
该命令清除所有全局变量
clearglobal nam1 .. namn           
该命令清除指定全局变量
clearglobal('nam1', ..,'namn')     
该命令清除指定全局变量
其中nam1 .. namn为有效的全局变量
例子:
global a b c
a=1;b=2;c=3;
who('global')
clearglobal b
who('global')

clear -清除变量
调用格式  clear a
说明:
这个命令用来清除不受保护的变量.clear a清除指定变量a,clear 清楚所有不受predef保护的变量.
正常情况下,受保护的变量是指标准库程序和带有百分号的变量,%pi,%t.
注意语法格式.clear a而不是clear(a).也要注意a=[]并没有清楚a,而是把a置空.

colon - (:) 冒号操作符
说明:
该操作符可以用来生成implicit vectors(不好翻译,看下面的例子就明白了)
j:k
生成一个向量[j, j+1,...,k](如果j>k则为空集).
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=2

comments -注释
注释行以//开始,它不会为scilab所编译

continue -控制语句中的关键词,使程序转向下一个循环.
说明:
forwhile循环中,命令continue使程序转向下一个循环,而忽略该次循环中continue语句和end语句之间的指令.
例子1:
for k=1:10,K=k;if k>2&k<=8 then continue,disp('hello'),end,k,end
例子2:
for j=1:2
    x=[];
    for k=1:10,if k>j+1&k<=8 then continue,end,x=[x,k];end
    x
  end

Date – 显示当前时间命令
调用格式: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

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值