Help us understand the problem. What is going on with this article?

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

メモとしてぼちぼち充実します。特に次の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行列処理の比較

注目ツール

利用分野 ツール 統合環境 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
return(list(A=1,B=2))

書き方

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')
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした