LoginSignup
6
8

More than 3 years have passed since last update.

Scilab,NumPy,R行列処理の比較

Last updated at Posted at 2017-09-10

メモとしてぼちぼち充実します。特に次の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の比較
配列と文字列処理の比較
関数とオブジェクトの書き方メモ
Scilab,NumPy,R行列処理の比較

SciLab関連ドキュメントリンク

install
macOSでSciLabを動かすまで
SciNoteのオートコンプリートをとめたい

実践
SciLabでCSV読み込み
SciLabでGUIを使ってみる

Mac/Windows共用scilabスクリプト未公開
SciLabでフィルタを適用する未公開
プロットメモ未公開
プロットあれこれ未公開

他の言語と比較・書き換え
Scilab (NumPy) - plotの書き方
配列と文字列処理の比較
関数とオブジェクトの書き方メモ
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 - plotの書き方(メモ)

文字列

SciLab NumPy R
"10" string(10)
連結 "AB" 'A'+'B'
置換 strsubst(s,'aaa','bbb')
6
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
8