|
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 文などと組み合わせて、繰り返しループを途中で中断したい場合に使用する。 |
|
|
|
|
|