メモとしてぼちぼち充実します。特に次の4点には注意が必要。
(1)NumPyは0ベース、SciLab,Rは1ベースなので、添え字が1つずれる
(2)SciLabは列ベクトルが基本、NumPyやRは行ベクトルが基本なので、1次元の数列から行列をつくるときに、転置の関係になる
(3)行列の総和、SciLabは演算方向を指定しsum(A,'r')、Rは演算対象を指定colSum(A)
(4)SciLabの行列の積は定義通り、NumPyとRは要素毎の積
関連メモ
python ジャンプスタート
C,perl,PHP. JavaScript,Scilab,VHDL,pythonの比較
[配列と文字列処理の比較](https://qiita.com/0x20FE/items/ b6ea768692297b721951)
関数とオブジェクトの書き方メモ
Scilab,NumPy,R行列処理の比較
##SciLab関連ドキュメントリンク
install
macOSでSciLabを動かすまで
SciNoteのオートコンプリートをとめたい
実践
SciLabでCSV読み込み
SciLabでGUIを使ってみる
Mac/Windows共用scilabスクリプト未公開
SciLabでフィルタを適用する未公開
プロットメモ未公開
プロットあれこれ未公開
他の言語と比較・書き換え
Scilab (NumPy) - plotの書き方
[配列と文字列処理の比較](https://qiita.com/0x20FE/items/ b6ea768692297b721951)
関数とオブジェクトの書き方メモ
Scilab,NumPy,R行列処理の比較
##注目ツール
| 利用分野 | ツール | 統合環境 | Mac | スクリプト | 工学分野利用例 | おすすめ解説記事 |
|---|---|---|---|---|---|---|
| 数値処理 | SciLab | SciLab | ✅ | .sce script | フィルタ設計 制御シミュレーション | |
| 統計処理 | R | Rstudio | ✅ | R script | 統計,解析 | 舟尾 暢男,"The R Tips" |
| 深層学習 | NumPy | ✅ | .py | 深層学習,数値計算 | ||
| 汎用 | Excel | ✅ | VB | pivot table, fft |
対応表
| 式、値 | SciLab | NumPy | R | |
|---|---|---|---|---|
| ■スカラー■ | ||||
| 複素数 | 2+3i | c=complex(2,3) | c<-2+3i | |
| 絶対値,偏角 | abs(c) | abs(c),Arg(c) | ||
| real(c),imag(c),conj(c) | Re(c),Im(c),Conj(c) | |||
| ■ベクトル■ | ||||
| 基本 | 行 | 行 | 列 | |
| 列方向 | ||||
| 添え字開始 | 1 | 0 | 1 | |
| 列ベクトル | 2 3 |
vc=[2;3] | vc=np.array([2],[3]) | vc<-c(2,3) |
| 行ベクトル | 1 2 | vr=[1,2] | vr=np.array([1,2]) | |
| 数列作成 | 0 1 … 6 0 2 … 8 |
[0:6] [0:2:8] |
np.arrange(0,8,2) |
0:6 seq(0,8,2) |
| 要素アクセス | 5番目 5〜10番目 |
vr(5) vr(5:10) |
||
| ■行列■ | ||||
| 行列 | 1 2 3 4 5 6 |
A=[1,2,3;4,5,6] | A=np.array([1,2,3],[4,5,6]) | matrix(c(1,4,2,5,3,6),2,3) |
| 数列から 行列作成 |
matrix([1:6],2,3) | matrix(1:6,2,3,byrow=T) | ||
| 次元 | 2 | A.dim | ||
| 形 | 2行 3列 | size(A) | A.shape | |
| 行を 結合 |
1 2 3 4 |
[[1,2];[3,4]] cat(1,[1 2],[3 4]) |
cbind(c(1,2),c(3,4)) | |
| 列を 結合 |
[1] [2] [3] [4] |
[[1;3],[2;4]] cat(2,[1;3],[2;4]) |
rbind(c(1,3),c(2,4)) | |
| 行次元反転 | 3 4 1 2 |
flipdim([1 2;3 4],1) | ||
| 列次元反転 | 2 1 4 3 |
flipdim([1 2;3 4],2) | ||
| 行ベクトル反転 | 3 4 2 1 | flipdim([1 2 3 4],2) | ||
| 単位行列 | 1 0 0 1 |
eye(2,2) | diag(2) | |
| 対角行列 | 1 0 0 2 |
diag([1 2]) | diag(c(1,2)) | |
| 要素 | A(1,2) | A(1,2) | A[0,1] | A[1,2] |
| 行抽出 | 2行 | A(2,:) | A[1] | A[2,] |
| 列抽出 | 2列 | A(:,2) | A[,2] | |
| 配列化 | matrix(A,1,要素数) | A.flatten() | ||
| 行列読み込み | fscanfMat('f.txt') | read.csv("f.csv") | ||
| ■多次元配列■ | ||||
| 1 3 5 2 4 6 7 9 11 8 10 12 |
x<-array(1:12,dim=c(2,3,2)) | |||
| ■行列演算■ | ||||
| ベクトル内積 | vr vc | vr*vc | np.sum(vr*vc) | vr %*% vc |
| ベクトル外積 | vr x vc | a %o% b | ||
| ベクトル総和 | np.sum(vc) | |||
| 列総和 平均 |
5 7 9 | sum(A,"r") | colSums(A) colMeans(A) |
|
| 行総和 平均 |
6 15 |
sum(A,"c") | rowSums(A) rowMeans(A) |
|
| 転置 | vc' | t(A) | ||
| 加算 | A + B | A+B | A+B | A+B |
| 積算 | AB | A*B | np.dot(A,B) | A %*% B |
| スカラー積 | 3A | 3*A | A*3 | 3*A |
| エレメント積 | .* | A*B | A*B | |
| エレメント商 | ./ | |||
| クロネッカー積 | kron(A,B) A .*. B |
A %x% B | ||
| 行列式 | det(A) | det(A) | ||
| 逆行列 | inv(A) | solve(A) | ||
| 固有値分解 | [V,E]=spec(A) | z<-eigen(A) z\\$values z\$vectors |
||
| QR分解 | [Q,R]=qr(X) | qr(A) | ||
| 特異値分解 | [U,S,V]=svd(X) | svd(A) |
関数定義
| 式 | SciLab | NumPy | R | |
|---|---|---|---|---|
| function y=myf(x) y=戻り値 end function |
def myf(x): return 戻り値 |
myf<-function(x)戻り値 | ||
| 複数戻り値 関数定義 |
function [y,z]=myf(x) ... end function |
def myf(x): return y,z |
return(list(A=1,B=2)) | |
| 複数戻り値 呼び出し |
[y,z]=myf(x) | y,z=myf(x) |
書き方
| 式 | SciLab | NumPy | R | |
|---|---|---|---|---|
| 継続行 | .. |
統計量
| 式 | SciLab | NumPy | R | |
|---|---|---|---|---|
| 要約統計量 | min,1/4,median,mean,3/4,max | min(x); median(x); mean(x); max(x); |
summary(x) | |
| 度数分布 | bin 0,1,2,...10 | b=linspece(0,10,11); x=rand(1,50)*10; histplot(b,x); |
table(cut(x,c(0,10,20))) |
信号処理
| 式 | SciLab | NumPy | R | |
|---|---|---|---|---|
| フィルタ 適用 |
(1+z^-1) (1-z^-1) |
filter([1 1],[1 -1],x) | ||
| アップサンプル | 1 0 2 0 3 | xu(1:2:length(x))=x | ||
| ダウンサンプル | 1 3 5 7 9 | xd=x(1:2:length(x) | ||
| FFT | fft(1,x) | |||
| IFFT | fft(2,f) |
プロット
文字列
| 式 | SciLab | NumPy | R | |
|---|---|---|---|---|
| 数 | "10" | string(10) | ||
| 連結 | "AB" | 'A'+'B' | ||
| 置換 | strsubst(s,'aaa','bbb') |