scilab中文帮助手册p.docx
- 文档编号:26766333
- 上传时间:2023-06-22
- 格式:DOCX
- 页数:36
- 大小:29.35KB
scilab中文帮助手册p.docx
《scilab中文帮助手册p.docx》由会员分享,可在线阅读,更多相关《scilab中文帮助手册p.docx(36页珍藏版)》请在冰豆网上搜索。
scilab中文帮助手册p
(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;ifk>100thenbreak,end;end
call-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/作为调入程序,再在文件(default/Flist)中增加一个入口,然后再使用命令makebin/scilex与scilab连接.
call语句有两种调用形式,长型与短型.短型调用语法简单,能够很快地编译代码,但必须写一个小小的C或者F接口程序.长型调用则不需要,但语法复杂,代码解释速度也比较慢.
例子:
C语言
case-判断语句的关键词
说明:
用在选择语句select...case中的关键词:
用法如下:
select表达式0
case表达式1then程序1,
case表达式2then程序2,
...
case表达式3then程序3,
[else程序],
end
例子:
while%tdo
n=round(10*rand(1,1))namn该命令清除指定全局变量
clearglobal('nam1',..,'namn')该命令清除指定全局变量
其中nam1..namn为有效的全局变量
例子:
globalabc
a=1;b=2;c=3;
who('global')
clearglobalb
who('global')
clear-清除变量
调用格式cleara
说明:
这个命令用来清除不受保护的变量.cleara清除指定变量a,而clear清楚所有不受predef保护的变量.
正常情况下,受保护的变量是指标准库程序和带有百分号的变量,如%pi,%t等.
注意语法格式.是cleara而不是clear(a).也要注意a=[]并没有清楚a,而是把a置空.
colon-(:
)冒号操作符
说明:
该操作符可以用来生成implicitvectors(不好翻译,看下面的例子就明白了)
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-注释
注释行以说明:
在for和while循环中,命令continue使程序转向下一个循环,而忽略该次循环中continue语句和end语句之间的指令.
例子1:
fork=1:
10,K=k;ifk>2&k<=8thencontinue,disp('hello'),end,k,end
例子2:
forj=1:
2
x=[];
fork=1:
10,ifk>j+1&k<=8thencontinue,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是返回的索引向量。
说明:
如果l是一个列表变量(listtlistmlist)那么k=definedfields(l)返回的k是列表变量中已定义元素的索引,如果元素未定义,则返回一个错误信息。
例子:
l=list
(1);l(3)=5
k=definedfields(l)
运行结果:
k=1.3.5.符号
调用格式:
如a.*b等
说明:
该操作符号可用来标志小数点,如和,还可以用来和其他符号组成运算符,比如,可以和(*/\^')组成(.*,.^,./,.\,.')运算符,比如C=A./B表示c(i,j)=a(i,j)/b(i,j),克乃内克乘积为“.*.”。
注意当(.)符号紧接着一个数字时,它总是表示这个数字的小数点,比如说2.*x就表示*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,[]]=A
inv([])=[]
det([])=cond([])=rcond([])=1,rank([])=0
当没有明显的答案时,矩阵运算返回空集[]或错误信息。
注意,空的线性系统(linearsystems,)可能有几行或者几列。
例子:
s=poly(0,'s');A=[s,s+1];
A+[],A*[]
A=rand(2,2);AA=A([],1),size(AA)
end-关键词
用在循环语句和条件语句的末尾,for,while,if,select必须用end来中止。
equal-(=)赋值与比较符号
=用于把值赋给变量
a==b则表明表达式a与表达式b相等。
对于矩阵对象来说:
如果a与b是同类型的矩阵,而且维数也相同,那么a==b会逐一比较对应元素,最后返回一个相同维数的布尔型矩阵。
如果a与b是同类型的矩阵,但a或b中有一个的维数是1*1,即只有一个元素,那么就将该元素逐一与另外一个矩阵中的元素比较,最后返回一个布尔型矩阵。
其他情况的比较结果全部返回布尔型变量%f。
对于list列表对象来说:
如果a与b是大小相同的列表,那么a==b会逐一比较对应元素,结果返回一个单行的布尔型向量。
如果a与b是大小不同的列表,那么结果返回布尔型变量%f。
对于tlist和mlist列表对象来说:
如果没有定义过载函数,那么操作与list列表一样
对于其他对象(函数,库...)来说:
如果对象相同则返回%t,其他情况则返回%f.
不同数据类型之间的比较返回%f.
例子:
a=sin
[u,s]=schur(rand(3,3))
[1:
10]==4
1~=2
errcatch-错误信息捕获命令
调用格式:
errcatch(n[,'action'][,'option'])
errcatch()
参数:
n:
整数
action,option:
字符串
说明:
当类型为n的错误发生时,errcatch给出一种行为(error-handler)让计算机执行。
如果n>0,n就是捕获的错误类型号;
如果n<0,表示所有类型的错误都会被捕获;
action是以下字符串之一
"pause":
当计算机捕获这个这个错误就执行暂停,这对调试很有用。
可以用whereami()获得当前环境
的信息。
"continue",忽略当前命令,继续执行下一行命令或可执行文件。
可以用iserror函数检查时候有错误
发生。
别忘了尽可能用errclear函数清楚错误。
这个选项对于恢复错误很有用。
在许多情况下,可以
用execstr函数来代替errcatch(n,"continue",..)。
"kill":
默认模式,所有的中介函数都被终止,scilab回到最高层提示符界面。
"stop":
中断当前scilab进程,当scilab被外部程序调用时这个命令很有用。
option是'nomessage'字符串,用来终止所有错误信息。
为了返回默认模式,可以输入errcatch(-1,"kill")或者errcatch(-1),errcatch()是一个旧命令,
等效于errcatch(-1)
备注:
errcatch()命令是一个旧命令,可以用try命令或者execstr(...,'errcatch')代替errcatch.
errclear-错误清除命令
调用格式:
errclear([n])
说明:
清除与错误类型n对应的行为(error-handler)。
如果n>0,n就是所被清除的错误类型号;
如果n<0,表示所有类型的错误都会被清除(默认);
error_table-错误信息表
说明:
这一页列出预先定义的错误信息表,以及它们对应的序号。
其中一些错误信息是Scilab软件自
己的剖析器错误(parsererrors)或者特殊内建错误(specificbuiltinerrors),其他的错误信息比较
通用,可以Scilab函数中使用。
带*号的是语句error(n,pos)中句柄有关的。
(表略)
error-errormessages
调用格式:
error(message[,n])
error(n)
error(n,pos)
参数:
message:
一个字符串,要显示的错误信息。
n:
整数。
错误信息的序号。
pos:
整数。
错误信息的参数。
说明:
error函数允许发布一个错误信息来处理错误,默认情况下error函数停止执行当前命令返回提示符界
面。
这个默认设置可以用errcatch或execstr(...,'errcatch')函数更改。
error(message)显示message所代表的错误信息,与此错误信息对应的序号是10000
error(message,n)显示message所代表的错误信息,与此错误信息对应的序号是n,n应该大与10000
error(n)显示已预定义好了的错误信息,该错误信息的序号是n
有一些预定义的错误信息要求有参数,在这种情况下,必须用error(n,pos)中的pos来指定参数值,在
其他情况下,pos参数可以不写。
etime-耗时
调用格式:
e=etime(t2,t1)
参数:
t2:
是一个6-10个值的向量
t1:
是一个6-10个值的向量
e:
t2与t1之间的秒数
说明:
当t1和t2都是含有10个值的向量时,他们的格式必须与getdate函数返回的格式一样。
在这种情况下
,它们的第三个,第四个,第五个值都被忽略。
当t1和t2都是含有6个值的向量时,他们的格式必须[YearMonthDayHourMinuteSecond]格式一样
,其中秒可以精确到毫秒。
t1和t2必须大小相同,t1和t2也可以是矩阵,但是该矩阵每一行都必须符合以上所述格式。
例子:
t1=[200406101700]
t2=[200406101701]
E1=etime(t2,t1)
t1=[20040624162510170012345]
t2=[20040624162510170113965]
E2=etime(t2,t1)
注释:
当当t1和t2都是含有10个值的向量时,如[20040624162510170012345],2004表示年
份,06表示月份,24表示周数,162表示天数,5表示本周中的第几天(以周日为第一天),10表示
本月中的第几日,17表示时,00表示分,12表示秒的整数部分,345表示秒的小数部分。
evstr-计算表达式的值
调用格式:
H=evstr(Z)
[H,ierr]=evstr(Z)
参数
Z:
字符串矩阵M或者列表list(M,Subexp)
M:
字符串矩阵
Subexp:
字符串向量
H:
矩阵
ierr:
整数,误差指示
说明:
该函数的运算结果返回字符串矩阵M中表达的的计算结果。
矩阵的每一个元素必须定义一个有效的Scil
ab表达式。
如果对M中表达式的计算有错,那么,对于返回一个值的表达式H=evstr(M)来说,它对错误不予理睬(r
aisestheerrorasusual);对于返回二个值的表达式[H,ierr]=evstr(M)来说,虽然显示出错,但
会返回一个出错序号给ierr。
如果z是一个列表,subexp是一个字符串向量,用来定义子字符串,对这些子字符串的计算是在对M的
计算之前。
这些子字符串必须要在M中以%(k)的形式提及,其中k是字符串向量subexp中子表达式的序
号。
evstr('a=1')是无效语句,请用execstr代替。
例子:
a=1;b=2;
Z=['a','b'];
H=evstr(Z)
ierr:
整数,0或者错误号.
msg:
值为'm'或'n'的字符串.默认值为'n'.
说明:
该命令执行由参数instr所给的指令。
如果'errcatch'没有出现,出错处理照常进行。
如果'errcatch'出现了,并且在执行指令的过程中产生了错误,那么execstr函数本身不发布出错信息
,但它会在出错点上中断执行instr指令,并启用错误号为ierr的出错信息,在这种情况下,出错信息
的显示由msg选项控制。
"m":
表示错误信息会显示而且会被记录。
"n":
不显示出错信息,但错误信息也会记录(参考lasterror命令),这个是默认选项.
ierr=execstr(instr,'errcatch')可以处理语法错误。
例子:
execstr('a=1')当按回车之后又继续执行命令
7:
既又暂停,又有提示符,还会显示出每一行命令,这对演示很有用途(7=1+2+4)
exec(fun[,mode])命令以脚本形式执行函数fun,没有输入变量,没有输出变量,也没有特殊的变量
环境。
这种形式很有效,因为脚本代码可以被预编译(参考getf,comp)。
这种脚本运算方法允许在
库中以函数的形式存储脚本。
如果在执行的时候遇到了错误,并且'errcatch'标志出现了,exec不会发布出错信息,但它会中断执
行指令,并启用错误号为ierr的出错信息,如果'errcatch'标志没有出现,标准的出错处理照常进行
。
例子:
mputl('a=1;b=2','c:
/exam')
exec('c:
/exam')
foo返回一个值时,它就会被破坏,对比前后两个whos
-name"a"所产生的结果就可以知道
whos-name"a"
x=1
exec(foo)
['disp([exists(''a12''),exists(''a12'',''local'')])'
'disp([exists(''x''),exists(''x'',''local'')])'])
foo
(1)
a12=[];foo
(1)
exit-结束当前Scilab进程
说明:
结束当前Scilab进程。
external-Scilab对象,外部函数与对象
说明:
特殊命令下外部函数与程序。
一个外部对象(external)就是一个用作高级命令(somehigh-levelprimitives)参数的函数或
者程序,例如ode,optim,schur等命令
外部对象(函数或者程序)的调用次序是由高级命令设置相关参数来决定。
例如:
比如说外部函数costfunc就是高级命令optim的一个参数,它的调用次序一定要如此:
[f,g,ind]=c
ostfunc(x,ind),然后高级最优化命令optim按以下方式调用:
optim(costfunc,...)
这里costfunc计算函数分f(x)的值和它在x点处的梯度(ind是一个整数,它的用处是使结果更加
精确化)
如果外部对象还需要其它值,这些变量可以在它的环境下定义,当然,他们也可以放在一个列表中
。
比如说,外部函数[f,g,ind]=costfunc(x,ind,a,b,c)。
该函数对optim是有效的,不过得保证这个外部对象是一个列表
list(costfunc,a,b,c),并且对optim调用格式如下:
optim(list(costfunc,a1,b1,c1),....
一个外部对象也可能是Fortran或者C程序,这对于提高运算速度有帮助。
这些程序的名字以字符串
的形式传给高级命令。
程序的调用次序也是规定的,这方面的例子在routines/default目录之下
。
外部Fortran或者C程序也能够被动态的调用。
extraction-矩阵或列表元素的提取
调用格式
x(i,j)
x(i)
[...]=l(i)
[...]=l(k1)...(kn)(i)or[...]=l(list(k1,...,kn,i))
l(k1)...(kn)(i,j)orl(list(k1,...,kn,list(i,j))
参数:
x:
各种类型的矩阵
l:
列表变量
i,j:
索引
k1,...kn:
索引
说明:
矩阵:
i和j可以实数标量,向量,或者正元素矩阵
*
r=x(i,j)命令建立一个矩阵r,其中元素r(l,k)=x(int(i(l)),int(j(k))),其中int(i(l))是取整
命令,即取i(l)的整数部分。
l的取值从1到向量i的总个数size(i,'*'),k的取值从1到向量j的总
个数size(j,'*'),注意i和j的最大值必须小于或者等于矩阵x的行数(size(x,1)
)与列数(size(x,2)).
例子:
x=[;;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- scilab 中文 帮助 手册