How to use > Scilabの使い方top

ビギナーのための科学技術計算ソフト(Scilab)の使い方講座

  目次
    1. Scilabとは?
    2. 3種類の使い方
     2.1 関数電卓的な使い方
     2.2 専用エディタによるプログラム言語的な使い方
     2.3 Xcosによるシミュレーション・ツールとしての使い方 (GUI型ブロック線図入力モジュール)
    3. 付録:Scilab言語の基本構文
     3.1 プログラム書式・数学演算子・数学関数・行列etc.

     
3.2 グラフィック・コマンド・制御構文


3. 付録: Scilab言語の基本構文
 
Scilabは、行列とベクトルを計算の基本構造としています。 Scilab言語を理解するには、このことをしっかりと把握していることが大事です。
Scilabには、膨大な数の関数が組み込まれています(Scilab Helpを参照)。以下で紹介しているのはほんの一部です。

プログラム書式
変数についてのルール
変数名に使える文字 アルファベット「a」〜「z」,「A」〜「Z」,数字「0」〜「9」,追加として「%」,「_」,「#」,「!」,「$」,「?」
大文字と小文字 Scilabでは、大文字と小文字を別のものと判断する
変数名の最大文字数 24文字以上に設定しても、無視される
代入の仕方 変数=値,式

(改行) 文の区切り 実行時、構文の結果がコンソールに表示される。
, 文の区切り 複数構文を1行に記述したい場合に区切りとして使用。実行時、区切る前の構文の結果がコンソールに表示される。
; 文の区切り 実行時、構文の結果をコンソールに表示したくない場合に構文末や行末に使用。複数構文を1行に記述する場合にも使用できるが、上のカンマと違い、結果表示はしない。
.. 行の継続 文や数式が1行に収まらないときに行末につける。(ドット2個以上)
// コメント 以降をコメントとみなす。行の途中からも使用可能。コメントは日本語も使用可能。

基本数学演算子
+ 加算  
- 減算  
/ 除算 x/y=xy^-1
\ 左側の数で割る除算 x\y=x^-1y
^ 累乗 x^y
** 累乗(同上) x**y
' 共役複素数 x'
定義済みの数学定数
%i 虚数単位 i
%e オイラーの定数、自然対数の底 e
%pi 円周率 π
%t
%f
%eps 1+%eps>1となる最小値、計算丸め誤差
%inf 無限大
%nan 非数
基本関数: 三角関数
三角関数(rad) sin cos tan cot sec csc
三角関数(度) sind cosd tand cotd secd cscd
逆三角関数 asin acos atan asec acot acsc
逆三角関数(度) asind acosd atand acotd asecd acscd
双曲線関数 sinh cosh tanh coth sech csch
逆双曲線関数 asinh acosh atanh acoth asech acsch
基本関数: 一般関数
意 味
関数
使用例とその結果
絶対値 abs abs(-1) → ans=1
abs(1+%i)  → ans=1.4142136
平方根 sqrt sqrt(2) → ans=1.4142136
指数関数 exp exp(1)  → ans=2.7182818
自然対数 log log(%e) → ans=1
常用対数 log10 log10(100) → ans=2
方形波 squarewave t=(0:0.1:6*%pi)';
plot2d(t,1.5*squarewave(t),2,rect=[0,-2,20,2])
plot2d(t,squarewave(t,10),5)
基本関数: 浮動小数点
意味
関数
使用例
四捨五入 round rund([1.3 1.5 1.7 2.6 3.4])
→ ans =
   
1. 2. 2. 3. 3.
round([-1.3 -1.5 -1.7 -2.6 -3.4])
→ ans =
   -1. -2. -2. -3. -3.
整数化
(小数以下切捨て)
fix fix([1.3 1.5 1.7 2.6 3.4])
→ ans =
   1. 1. 1. 2. 3.
fix([-1.3 -1.5 -1.7 -2.6 -3.4])
→ ans =
   -1. -1. -1. -2. -3.
切り下げ floor floor([1.3 1.5 1.7 2.6 3.4])
→ ans =
   1. 1. 1. 2. 3.
floor([-1.3 -1.5 -1.7 -2.6 -3.4])
→ ans =
   -2. -2. -2. -3. -4.
切り上げ ceil ceil([1.3 1.5 1.7 2.6 3.4])
→ ans =
   2. 2. 2. 3. 4.
ceil([-1.3 -1.5 -1.7 -2.6 -3.4])
→ ans =
   -1. -1. -1. -2. -3.
基本関数: ビット単位演算
意味
関数
使用例
論理積 bitand x=86; // '1010110'
y=91; // '1011011'
//82: '1010010'
→z=bitand(x,y)
 z=
  82
論理和 bitor x=48; // '110000'
y=37; // '100101'
//53: '110101'
→z=bitor(x,y)
 z=
  53
排他的論理和 bitxor x=13; // '01101'
y=27; // '11011'
//22: '10110'
→z=bitxor(x,y)
 z=
  22
ブール代数: 論理演算子と比較演算子
演算子
意  味
使 用 例
a|b 論理和 aとbのいずれかが真ならば真 x=2; a=(x==2), b=(x==0) → a|b = T
a&b 論理積 aとbの両方とも真ならば真 x=2; a=(x==2), b=(x==0) → a&b = F
~a 否定  aが偽ならば真 x=2; a=(x==3) → ~a = T
a==b aとbが等しければ真 a=2; b=3; c=(a==b) → c = F
a~=b aとbが等しくなければ真 a=2; b=3; c=(a~=b) → c = T
a<>b aとbが等しくなければ真(同上) a=2; b=3; c=(a<>b) → c = T
a>b aがbより大きければ真 a=2; b=3; c=(a>b) → c = F
a<b aがbより小さければ真 a=2; b=3; c=(a<b) → c = T
a>=b aがb以上ならば真 a=2; b=3; c=(a>=b) → c = F
a<=b aがb以下ならば真 a=2; b=3; c=(a<=b) → c = T
複素数
複素数の記述の仕方 x=1+2*%i → x=1. + 2.i
複素数の作成 complex(1,2) → ans =1. + 2.i
complex([1 2],[3 4]) → ans =1. + 3.i 2. + 4.i
complex([1 2 3], 4) → 
   ans = 1. + 4.i 2. + 4.i 3. + 4.i
complex(1, [2 3 4])
   ans = 1. + 2.i 1. + 3.i 1. + 4.i
共役複素数 x' → ans=1. - 2.i
conj(x) → ans=1. - 2.i
実数部の抽出 real(x) → ans=1.
虚数部の抽出 imag(x) → ans=2.
絶対値 abs(x) → ans=2.236068
位相 atan(imag(x),real(x)) → ans=1.1071487 (rad)
atand(imag(x),real(x)) → ans=63.434949 (°)
文字列  自由度の高い変数型
すべての変数型宣言必要なしであり、
文字列の指定変数型宣言必要なし
同じ変数にそのまま実数を上書きしても
問題なし
指定方法は、ダブルクォーテンション「"」
またはシングルクォーテンション「'」で囲む
-->x="aspi"; y="ration"; x+y
ans =
  aspiration
-->x=1; y=2; x+y
ans =
  
3.
行列の基礎
行列の定義 始めと終わりに角括弧[ ]をつける
列の区切り スペースまたはコンマ「,」
行の区切り セミコロン「;」
行ベクトル -->A=[1 2 3]
A =
  1. 2. 3.
列ベクトル -->A=[1; 2; 3]
A =
  1.
  
2.
  3.
2行3列の行列の作り方 -->A=[1 2 3; 4 5 6] 
A =
  1. 2. 3.
  4. 5. 6.
2行3列行列の作り方(その2) -->A=[1 2 3
--> 4 5 6] 
A =
  1. 2. 3.
  4. 5. 6.
恒等行列 -->eye(2, 3)
ans =
  1. 0. 0.
  0. 1. 0
ゼロ行列 -->zero(2, 3)
ans =
  0. 0. 0.
  0. 0. 0.
1でできた行列 -->ones(2, 3)
ans =
  1. 1. 1.
  1. 1. 1.
乱数発生 -->rand(2, 3)
ans =
  0.1150637 0.4311733 0.9258962
  
0.535542  0.6145385 0.0993817
等差数列による行ベクトル
(開始値):(公差):(終了上限値)
右の例では 3 3+2 3+4 3+6
公差を省略すると1とみなされる
-->v= 3:2:10
v =
  3. 5. 7. 9.
-->v=3:10
v =
  3. 4. 5. 6. 7. 8. 9. 10.
等差数列による行ベクトル(その2)
((開始値),(終了値),(個数))
-->v=linspace(3,10,5)
v =
  3.  4.75  6.5  8.25  10.
常用対数の等比数列による行ベクトル
((開始値),(終了値),(個数))
log10(10), log10(10000), 4
-->v=logspace(1, 4, 4)
v =
  10.  100.  1000.  10000.
ベクトルの成分抽出
a(2)→ベクトルaの2番目の成分を抽出
a(2:4)→ベクトルaの2〜4番目の成分を抽出
-->a=1:10; a(2)
ans =
  2.
-->a(2:4)
ans =
  2. 3. 4.
ベクトルの成分に代入
ベクトルaの第2,4,6成分に指定値を代入
-->a=1:10; a([2, 4, 6])=[200, 400, 600]
a =
  1. 200. 3. 400. 5. 600. 7. 8. 9. 10.
行列の成分抽出

A(2, 3)→行列Aの第2行第3列の成分を抽出
A(1:2, 2:4)→
  行列Aの第1〜2行で第2〜4列の成分を抽出
A(2, 2:4)→行列Aの第2行の第2〜4成分を抽出
A(2, :)→行列Aの第2行すべての成分を抽出
A(: , 3)→行列Aの第3列すべての成分を抽出
-->A=[1 2 3 4; 5 6 7 8; 9 10 11 12]; A(2, 3)
ans =
  7.
-->A(1:2, 2:4)
ans =
  2. 3. 4.
  6. 7. 8.
-->A(2, 2:4)
ans =
  6. 7. 8.
-->A(2, :)
ans =
  5. 6. 7. 8.
-->A(: , 3)
ans =
  3.
  7.
行列の成分に代入
A([1, 3], 2)=[20, 100]' → 
 行列Aの第2列の第1と第3成分に指定値を代入
 列への代入なので代入値は「'」で列ベクトルに変換
-->A=[1 2 3 4; 5 6 7 8; 9 10 11 12];
-->A([1, 3], 2)=[20, 100]'
A =
  1.  20.  3.   4.
  
5.  6.    7.   8.
  
9.  100.  11.  12.
行列の演算
+ -->A=[1 2 3; 4 5 6];
-->B=[6 5 4; 3 2 1]; A+B
ans =
  7. 7. 7.
  7. 7. 7.
.+ 成分同士の加算 (和に同じ)
- -->A=[2 3 4; 5 6 7];
-->B=[1 1 1; 1 1 1]; A-B
ans =
  1. 2. 3.
  4. 5. 6.
.- 成分同士の減算 (差に同じ)
*

行列同士または
スカラーと行列
-->A=[1 1 1; 2 2 2]; B=[3; 3; 3];
-->A*B
ans =
  9.
  18.
-->C=3*A
ans =
  3. 3. 3.
  6. 6. 6.
.* 成分同士または
スカラーと行列の
乗算
-->A=[1 1 1; 2 2 2];
-->B=[3 3 3; 4 4 4]; A.*B
ans =
  3. 3. 3.
  8. 8. 8.
-->C=3.*A
ans =
  3. 3. 3.
  6. 6. 6.
\ 連立一次方程式Ax=bを解く
左から逆行列を掛ける
-->A=[1 2 3; 4 5 6; 7 8 0];
-->b=[9; 0; 0]; x=A\b
x =
  -16.
   14.
  -1.
.\ 成分同士または
スカラーと行列の
除算
左側の成分で割る
-->A=[4 4 4; 2 2 2];
-->B=[12 12 12; 8 8 8]; A.\B
ans =
  3. 3. 3.
  4. 4. 4.
-->2.\A (2\Aでも同じ)
ans =
  2. 2. 2.
  1. 1. 1.
-->A.\2 (2\Aはエラー)
ans =
  0.5 0.5 0.5
  1. 1. 1.
Ax=bがただ1組の解をもたない場合→ 最小二乗解を表示 -->A=[1 2 3; 4 5 6; 7 8 9];
-->b=[10; 11; 12]; x=A\b
Warning : ・・・
x =
  -4.5
   0.
  -4.8333333
/ 連立一次方程式xA=bを解く
右から逆行列を掛ける

-->A=[1 2 3; 4 5 6; 7 8 0]' ;
-->b=[9 0 0]; x=b/A
x =
  -16. 14. -1.
./ 成分同士または
スカラーと行列の
除算
右側の成分で割る
-->A=[10 10 10; 8 8 8];
-->B=[5 5 5; 2 2 2]; A./B
ans =
  2. 2. 2.
  4. 4. 4.
-->A./2 (A/2でも同じ)
ans =
  5. 5. 5.
  4. 4. 4.
-->2 ./A (2とドットの間にスペース)
ans =
  0.2 0.2 0.2
  0.25 0.25 0.25
2./Aおよび2/Aはエラー
xA=bがただ1組の解をもたない場合→ 最小二乗解を表示 -->A=[1 2 3; 4 5 6; 7 8 9]' ;
-->b=[10 11 12]; x=b/A
Warning : ・・・
x =
  - 4.5 0. 4.8333333
^ べき乗
正方行列に対しては行列の演算を行う。行ベクトル、列ベクトルに対しては、成分ごとに演算。
-->A=[4 4; 9 9]; A^2
ans =
  52.  52.
  117. 117.
-->A^0.5
ans =
  1.1094004 1.1094004
  2.4961509 2.4961509
-->v=1:5; v^2
ans =
  1. 4. 9. 16. 25.
.^ 成分ごとのべき乗 -->A=[4 4 4; 9 9 9]; A.^2
ans =
  16. 16. 16.
  81. 81. 81.
-->A^0.5
ans =
  2. 2. 2.
  3. 3. 3.
-->v=1:5; v.^2
ans =
  1. 4. 9. 16. 25.
** べき乗(同上) -->A=[4 4; 9 9]; A**2 - - -
' 共役転置行列
(随伴行列)
-->A=[1 2+3*%i 4
-->  5-6*%i 7 8+9*%i];
-->A'
ans =
  1.    5.+6.i
  2.-3.i  7.
  4.    8.-9.*i
.' 転置行列 -->A=[1 2+3*%i 4
-->  5-6*%i 7 8+9*%i];
-->A.'
ans =
  1.    5.-6.i
  2.+3.i  7.
  4.    8.+9.*i
内積 -->a=[1 2 3]; b=[4 5 6];
-->a*b'
ans =
  32.
- - -
グラフィック用コマンド (主なもの)
種 類
コマンド
構 文
説   明
2Dプロット plot plot([x,] y, <LineSpec>,<GlobalProperty>)
MATLABと共通性を持たすために用意されたコマンド。
引数x(横軸),y(縦軸)はベクトルまたは行列を指定する。x,yには組み込み関数を使用可。
<LineSpec>には、線種、色、マークを指定する文字列を入力。<GlobalProperty>では、このplotコマンドで指定するグラフ全部に対する特性を設定する。plotおよびsurfコマンドで使用可能。

使用例: plot(x,sin(x),'r.->')  plot(x,y1,'o:',x,y2,'*--')
plot2d plot2d([x],y,<オプション引数>)
引数x(横軸),y(縦軸)はベクトルまたは行列を指定する。x,yには組み込み関数を使用可。
<オプション引数>には、key1=value1,key2=value2,...という形式で入力する。オプション引数には、style(style=のみ省略可),logflag,rect,frameflag,axesflag,nax,legがある。

使用例: plot2d(x,sin(x),2)  plot2d(x, [sin(x) sin(2*x) sin(3*x)], [2 5 3])
plot2d1  - 現在使われていない。代わりにplot2dを使用する。
plot2d2 plot2d2([x],y,<オプション引数>) 次のx値までy値が一定となる階段状のグラフを描く。

使用例: plot2d2(x,sin(x),3)
plot2d3 plot2d3([x],y,<オプション引数>) グラフが縦線の羅列で表現される。

使用例: plot2d3(x,sin(x),4)
plot2d4 plot2d4([x],y,<オプション引数>) グラフが矢印の連続で表現される。常微分方程式の解を位相空間で描くときに有効。

使用例: plot2d4(x,sin(x),5)
fplot2d plot2d(x,f,<オプション引数>)
外部関数 f(x) を引数としてグラフを描く。xはベクトルを設定。
deff組込関数を用い別途 f(x)を指定しておく。例: deff("[y]=f(x)","y=sin(x)+cos(x)")

使用例: fplot(x,f,6)
3D曲面 surf surf(Z,<GlobalProperty>)
surf(Z,color,<GlobalProperty>)
surf(X,Y,Z,<color>,<GlobalProperty>)
MATLABと共通性を持たすために用意されたコマンド。3Dの曲面を描く。

使用例: surf(z)
plot3d plot3d(x,y,z,[theta,alpha,leg,flag,ebox])
plot3d(x,y,z,<オプション引数>)
plot3d(xf,yf,zf,
  [theta,alpha,leg,flag,ebox])
plot3d(xf,yf,zf,<オプション引数>)
plot3d(xf,yf,list(zf,colors),
  [theta,alpha,leg,flag,ebox])
plot3d(xf,yf,list(zf,colors),
  <オプション引数>)
3Dの曲面を描く。

使用例: plot3d(x,y,z)
plot3d1 plot3d(x,y,z,[theta,alpha,leg,flag,ebox])
plot3d(x,y,z,<オプション引数>)
plot3d(xf,yf,zf,
  [theta,alpha,leg,flag,ebox])
plot3d(xf,yf,zf,<オプション引数>)
濃淡またはカラーのレベルで表される曲面を描く。

使用例: plot3d1(x,y,z)
plot3d2 plot3d2(X,Y,Z,
  [vect,theta,alpha,leg,flag,ebox])
plot3d2(X,Y,Z, <オプション引数>)
長方形の小面をつないだ構造の曲面を描く。

使用例: plot3d2(x,y,z)
plot3d3 plot3d2(X,Y,Z,
  [vect,theta,alpha,leg,flag,ebox])
plot3d2(X,Y,Z, <オプション引数>)
メッシュ構造の曲面を描く。

使用例: plot3d3(x,y,z)
fplot3d fplot3d(xr,yr,f,
  [theta,alpha,leg,flag,ebox])
fplot3d(xr,yr,f,<オプション引数>)
外部関数 f(xr,yr) を引数としてグラフを描く。
deff組込関数を用い別途 f(xr,yr)を指定しておく。例:deff('z=f(x,y)','z=x^4-y^4');x=-3:0.2:3 ;y=x ;

使用例: fplot3d(x,y,f)
fplot3d1 fplot3d(xr,yr,f,
  [theta,alpha,leg,flag,ebox])
fplot3d(xr,yr,f,<オプション引数>)
外部関数 f(xr,yr) を引数としてグラフを描く。濃淡またはカラーのレベルによって曲面を表す。

使用例: fplot3d1(x,y,f)
mesh mesh(Z)
mesh(X,Y,Z)
mesh(...,<GlobalProperty>)
mesh(...,<color>,<GlobalProperty>)
mesh(<axes_handle>,...)
メッシュ構造の曲面を描く。MATLABと共通性を持たすために用意されたコマンド。

使用例: [X,Y]=meshgrid(-1:.1:1,-1:.1:1); Z=X.^2-Y.^2; mesh(X,Y,Z);
等高線図 contour contour(x,y,z,nz,
  [theta,alpha,leg,flag,ebox,zlev])
contour(x,y,z,nz,<オプション引数>)
3D曲面上の等高線を示す。2D平面上への描画も可能。

使用例: contour(t,t,my_surf,10)
fcontour  - 現在使われていない。代わりにcontourを使用する。
contour2d contour2d(x,y,z,nz,
  [style,strf,leg,rect,nax])
contour2d(x,y,z,nz,<オプション引数>)
2D平面上に等高線を描く。

使用例: contour2d(x,y,z,10)
fcontour2d  - 現在使われていない。代わりにcontour2dを使用する。
円グラフ pie pie(x[,sp[,txt]])
円グラフを描く。xは比率を行ベクトルで、spは分離する部分を1、他は0の行ベクトルで、txtはラベル文字列を行ベクトルで表す。

使用例: pie([1 2 5])  pie([3 4 6 2],[0 1 0 0],["part1","part2","part3","part4"]);
棒グラフ histplot histplot(n, data, <オプション引数>)
histplot(x, data, <オプション引数>)
度数分布図(棒グラフ)を描く。nは、横軸の分割数。xは、横軸の値を直接行ベクトルで代入する。dataは、グラフ化したいデータを行ベクトルで入力。

使用例: histplot(20,d)
bar bar(y [,width [,color [,style]]])
bar([h],x,y [,width [,color [,style]]])
棒グラフを表示する。yは、縦軸に表示されるデータでスカラーまたはベクトルまたは行列。xは横軸値を指定するスカラーまたはベクトル。styleに、"stacked"を記入すると積み上げ棒グラフを表示。

使用例: bar(x,y)
barh barh(y [,width [,color [,style]]])
barh([h],x,y [,width [,color [,style]]])
barで作成されるグラフを水平に表示。

使用例: barh(x,y)
hist3d hist3d(f,[theta,alpha,leg,flag,ebox])
hist3d(f,<オプション引数>)
hist3d(list(f,x,y),
  [theta,alpha,leg,flag,ebox])
hist3d(list(f,x,y),<オプション引数>)
2Dの棒グラフを3Dのグラフとして表示。fはデータ行列、x,yはベクトル値。

使用例: hist3d(Z)
ボーデ線図 bode bode(sl,[fmin,fmax] [,step]
  [,comments] )
bode(sl,frq [,comments] )
bode(frq,db,phi [,comments])
bode(frq, repf [,comments])
周波数応答の振幅と位相を表示する。
横軸の値となる周波数は、fmin,fmaxまたはベクトルfrqで与える。縦軸表示データは、周波数の連続関数または離散関数としてslで与える。振幅、位相、複素関数の行列を各々db,phi,repfに入力しても良い。

使用例: bode(gg,100,1e6)
極座標 polarplot polarplot(theta,rho,
  [style,strf,leg,rect])
polarplot(theta,rho,<オプション引数>)
theta=偏角(rad)、rho=絶対値をベクトルで入力する。デフォルトでは、各データを直線でつないだ結果が表示される。

使用例: polarplot(%pi/4,[0 1],style=5)
ポール・ゼロ plzr plzr(sl) 線形システムslのポール・ゼロ・プロットを描く。

使用例: s=poly(0,'s'); sl=syslin('c',H); plzr(sl)
ベクトル場 champ champ(x,y,fx,fy,[arfact,rect,strf])
champ(x,y,fx,fy,<オプション引数>)
2Dのベクトル場を描く。矢の長さが場の強さを表す。
x,yは横軸縦軸のベクトルを描く範囲を決める。fxはベクトル場のx要素を記述する行列。fyはベクトル場のy要素を記述する行列。

使用例: champ(-5:5,-5:5,rand(11,11),rand(11,11))
champ1 champ1(x,y,fx,fy,[arfact,rect,strf]) 2Dのベクトル場を描く。矢の色が場の強さによって変わる。長さはすべて同じ。

使用例: champ1(-5:5,-5:5,rand(11,11),rand(11,11))
fchamp fchamp(f,t,xr,yr,[arfact,rect,strf])
fchamp(f,t,xr,yr,<オプション引数>)
別途指定する時間と位置の関数 f (外部関数)を引数として2Dのベクトル場を描く。

使用例: fchamp(derpol,0,xf,yf)
2D色分け表示 grayplot grayplot(x,y,z,[strf,rect,nax])
grayplot(x,y,z,<オプション引数>)
2つの行ベクトルx,yで定義されるグリッド上に、実行列zで定義される矩形を並べて平面を描く。矩形は濃淡または色分けされる。

使用例: x=-10:10; y=-10:10; z =rand(21,21); grayplot(x,y,z)
Sgrayplot Sgrayplot(x,y,z,<オプション引数>)
Sgrayplot(x,y,z [,strf, rect, nax, zminmax, colminmax, mesh, colout])
grayplotとデータの入力方法は同じだが、色分けがスムーズ処理されて描かれる。

使用例: x=-10:10; y=-10:10; z =rand(21,21); Sgrayplot(x,y,z)
fgrayplot fgrayplot(x,y,f,[strf,rect,nax])
fgrayplot(x,y,f,<オプション引数>)
2つの行ベクトルx,yで定義されるグリッド上に、外部関数z=f(x,y)で定義される矩形を並べて平面を描く。矩形は濃淡または色分けされる。

使用例: t=-1:0.1:1; deff("[z]=my_surface(x,y)","z=x+y")
fgrayplot(t,t,my_surface,rect=[-2,-2,2,2])
Sfgrayplot fgrayplot(x,y,f,<オプション引数>)
Sfgrayplot(x,y,f [,strf, rect, nax, zminmax, colminmax, mesh, colout])
fgrayplotとデータの入力方法は同じだが、色分けがスムーズ処理されて描かれる。

使用例: t=-1:0.1:1; deff("[z]=my_surface(x,y)","z=x+y")
Sfgrayplot(t,t,my_surface,rect=[-2,-2,2,2])
Matplot Matplot(a,[strf,rect,nax])
Matplot(a,<オプション引数>)
実行列aを色づけして2Dプロットする。

使用例: Matplot([1 2 3; 4 5 6])
Matplot1 Matplot1(a,rect) 実行列aを色づけして2Dプロットする。rectは、[xmin,ymin,xmax,ymax]

使用例: Matplot1(a,[1,1,3,3])
3D曲線 param3d param3d(x,y,z,
  [theta,alpha,leg,flag,ebox])
座標x,y,zによって定義される3Dカーブを描く。x,y,zは同じサイズのベクトルを指定する。

使用例: t=0:0.1:5*%pi; param3d(sin(t),cos(t),t/10,35,45,"X@Y@Z",[2,3])
param3d1 param3d1(x,y,z,
  [theta,alpha,leg,flag,ebox])
param3d1(x,y,list(z,colors),
  [theta,alpha,leg,flag,ebox])
param3dと違って複数本の曲線を描くことができる。

使用例: t=[0:0.1:5*%pi]'; param3d1([sin(t),sin(2*t)],[cos(t),cos(2*t)],..
ist([t/10,sin(t)],[3,2]),35,45,"X@Y@Z",[2,3])
<オプション引数> style=2 曲線を色つきの連続線で描くか、特定のシンボルの羅列で描くかを指定する。この引数のみキーワード省略可能。
1(黒)(デフォルト)、2(青)、3(黄緑)、4(シアン:水色)、5(赤)、6(マジェンタ:濃いピンク)、7(黄色)、・・・
0(ドット)、-1(十字)、-2(バツ)、-3(丸に十字)、-4(ダイヤ(塗りつぶし))、-5(ダイヤ)、-6(三角)、-7(三角(下向き))、-8(ダイヤに十字)、・・・
logflag="ll " グラフの軸スケールを線形または対数に設定する。
"nn":x軸線形y軸線形(デフォルト)、"ln":x軸対数y軸線形、"nl ":x軸線形y軸対数、"ll ":x軸対数y軸対数
rect=[-10,0,10,100] グラフ領域を、変更したいときに設定。
グラフ領域の最小値をx,y軸最小座標、x,y軸最大座標で設定できるが、あくまで目安とみなされる。次の引数frameflagと一緒に使われ実際の領域が決まる。

[xmin,ymin,xmax,ymax]
frameflag=4 グラフ領域を、変更したいときに設定。
0(計算しないまたはデフォルト値を使用する)、1(rectオプションで設定した値をそのまま使用する)、2(表示範囲が、xとyデータのmin/maxから計算される)、3(rectオプションによる範囲について、xyが等尺性スケールに変更される)、4(表示範囲が、xとyデータのmin/maxから計算され、等尺性スケールに変更される)、5(rectオプションによる範囲について、軸ラベルが見やすいように変更される)、6(表示範囲が、xとyデータのmin/maxから計算され、軸ラベルが見やすいように変更される)、7(1に似ているが、新しいスケールで前のプロットが書き直される)、8(2に似ているが、新しいスケールで前のプロットが書き直される)、9(8に似ているが、軸ラベルが見やすいように変更される)(デフォルト)
axesflag=4 座標軸をどう描くかを設定する。
0(軸が何も描かれない)、1(y軸が左側に表示される。ボックス表示あり)、2(目盛り
なしのボックス表示)、3(y軸が右側に表示される)、4(xy軸が中央に描かれる)、5(xy軸が中央に描かれる。ボックス表示あり)、9(y軸が左側に表示される)(デフォルト)
nax=[4,7,9,5] 軸の目盛りラベルの定義をする。
[nx, nX, ny, nY]
nXとnYはそれぞれx軸とy軸の主目盛りラベル数を、nxとnyはそれぞれx軸とy軸の主目盛り間のサブ目盛りラベル数を定義する。
strf="081" "xyz" → x:凡例制御、y:グラフ範囲制御、z:グラフ・フレーム制御
x=0:凡例なし、x=1:凡例あり
y=0:計算せず、y=1:rectの指定値使用、y=2:min/maxから計算、y=3:rectの指定値使用。等尺、y=4:min/maxから計算。等尺、y=5:rectの指定値を改良、y=6:min/maxからの計算値を改良、y=7:1に似ているが、新しいスケールで前のプロットが書き直される。y=8:2に似ているが、新しいスケールで前のプロットが書き直される。
z=0:軸が何も描かれない、z=1:y軸が左側に表示される。ボックス表示あり、z=2:目盛り
なしのボックス表示、z=3:y軸が右側に表示される、z=4:xy軸が中央に描かれボックスあり、z=5:ボックス表示あり。(0,0)が中心となる十字軸構成。
leg="plot1" グラフ曲線の凡例を定義する。
"leg1@leg2@...."
x軸の下に表示される。もっと細かく定義する場合はグラフィック補助コマンドを使用する。
グラフィック補助コマンド
コマンド
構 文
説   明
xgrid xgrid([style]) グラフ(2Dプロット)にグリッドを表示する。styleには次の整数を入れ色指定できる。なし(黒)、2(青)、3(緑)、4(シアン)、5(赤)、6(マゼンタ)、7(黄)、9(紺)、・・・

使用例: xgrid(2)
xtitle xtitle(title,[x_label,[y_label,[z_label]]],
<opt_args>)
2Dまたは3Dプロットにタイトルを表示する。x軸、y軸、z軸にラベルを表示する。

xtitle( 'My surface', 'X axis', 'Y axis', 'Z axis' ) ;
legend hl=legend([h,] string1,string2, ...
[,pos] [,boxed])
hl=legend([h,] strings [,pos] [,boxed])
グラフに凡例をつける。

使用例: plot2d(t,[cos(t'),cos(2*t'),cos(3*t')],[-5,2 3]); hl=legend(['cos(t)'; 'cos(2*t)'; 'cos(3*t)']);
legends legends(strings,style,
<オプション引数>)
グラフに凡例をつける。

使用例: plot2d(t,[cos(t'),cos(2*t'),cos(3*t')],[-5,2 3]); legends(['cos(t)';'cos(2*t)';'cos(3*t)'],[-1,2 3],opt="lr")

xstring xstring(x,y,str,[angle,box]) 文字列を入力する。グラフに説明の文字を入れる。

使用例: xstring(0.5,0.5,"$\overbrace{Scilab}$")
clf clf(<opt_job_args>)
clf(h,<opt_job_args>)
clf(<num,<opt_job_args>)
現在表示されている図形ウィンドウ・データをクリアにする。<opt_job_args>は、"clear"または"reset"を入力。"reset"の場合は図形を消すだけでなく、設定も初期化する。hはハンドル指定、numはグラフID指定。

使用例: clf()
scf f = scf()
f = scf(h)
f = scf(num)
現在の図形ウィンドウをセットする。scf()で、既表示のウィンドウはそのままで新しいウィンドウを作成する。

使用例: scf()
subplot subplot(m,n,p)
subplot(mnp)
ひとつの図形ウィンドウを、m×n行列で示される小画面(サブ画面)に分割し、現在のプロットをp番目の小画面に表示する。複数のグラフ画面をひとつのウィンドウ内に表示したいときに使用。

使用例: subplot(221); plot2d(); subplot(222); plot3d(); subplot(2,2,3); param3d(); subplot(2,2,4); hist3d()

表示データ処理コマンド
コマンド
構 文
説   明
genfac3d [xx,yy,zz]=genfac3d(x,y,z,[mask]) x,y,zで定義される3D曲面z=f(x,y)のための四角の小面の表示データを計算する。

使用例: t=[0:0.3:2*%pi]'; z=sin(t)*cos(t'); [xx,yy,zz]=genfac3d(t,t,z); plot3d(xx,yy,zz)
eval3d [z]=eval3d(fun,x,[y]) x,yグリッド上の関数の値を行列zに入れる。

使用例: x=-5:5; y=x; deff('[z]=f(x,y)',['z= x.*y']); z=eval3d(f,x,y); plot3d(x,y,z);
eval3dp [Xf,Yf,Zf]=eval3dp(fun,p1,p2) 3Dパラメトリック曲面の小面を計算する。Xf,Yf,Zfは行列。p1、p2はベクトル。funはユーザー定義または任意のScilab関数。

使用例: [Xf,Yf,Zf]=eval3dp(scp,p1,p2); plot3d(Xf,Yf,Zf)
geom3d [x,y]=geom3d(x1,y1,z1) 3Dプロット後、3Dを2Dへ投影するデータを取得する。

使用例: [x,y]=geom3d(%pi/2,0,surface(%pi/2,0)); plot2d(x,y)

制御構文
基本形
使用例
説   明
無条件繰り返し

for ..... end
S1=0; S2=0;
for I=1:100
S1=S1+I; S2=S2+I.^2;
end
S1,S2
変数 I の値を1〜100まで1ずつ増やしていき、その間for ... endに囲まれた構文を実行する。

構文の後ろに「;」がある場合は、コンソールへの表示は行われない。
繰り返し

while ...... end
S1=0; S2=0; I=0;
while I<100
I=I+1; S1=S1+I; S2=S2+I.^2;
end
S1, S2
whileの後ろにある終了条件が満たされるまで、while ...... endで囲まれた構文を繰り返す。

終了条件に使用できる関係演算子と論理演算子には、以下のものがあります。
以下の条件が真であるとき、繰り返しループを終了します。

判定条件
関係演算子
論理演算子

x==y xとyは等しい
x~=y xとyは等しくない
x>y xはyより大きい
x>=y xはy以上である
x<y xはyより小さい
x<=y xはy以下である
  
 
~p
pの否定
p&q
pとqの論理積
p|q
pとqの論理和

条件分岐

if .... else ... end
X=input("任意の数 X を入力して下さい。");
if X>0 then
disp("Xは、正の数です。");
elseif X==0 then
disp("Xは、0 です。");
else
disp("Xは、負の数です。");
end
一般構文 --- 判定条件には上表を使用

if 判定条件1  (then)
  実行文1
elseif 判定条件2 (then)
  実行文2
else
  実行文3
end
選択分岐

select .... case
.... else .... end
X=input("任意の数 X を入力して下さい。");
select sign(X)
case 1
disp("Xは、正の数です。");
case -1
disp("Xは、負の数です。");
else
disp("Xは、0 です。");
end
一般構文 --- 判定条件には任意の数式または文字列を使用

select 判定条件
case 数値または文字列1
     実行文1
case 数値または文字列2
     実行文2
case 数値または文字列3
     実行文3
else
実行文4
end
繰り返しの中断

break
tic()
while toc()<10
X=fix(rand()*10000);
if X==1234 then
disp(toc(),"1234を発生し中断しました。時間は")
break
end
end
if 文などと組み合わせて、繰り返しループを途中で中断したい場合に使用する。

Home | What's Simulation | How to use | Links | Books | Services | About us | Contact us | Blog

Copyright(C) 2011 SimCircuit Technologies Co., Ltd.