FreeMat v4.0 日本語ドキュメント
初等関数

 

ドキュメント目次

--------------------------------------------------------------------
min 最小値

  [構文]
 [y,n] = min(x,[],d)
 [y,n] = min(x)
xは、最小値を求める行列、dは行および列を指定する引数。出力引数nは最小値のインデックス。

 y = min(x,z) 
この文法ではx,zを比較して小さい値を同行列サイズで出力。
 [例]
--> A = [5,1,3;3,2,1;0,3,1]

A =

5 1 3
3 2 1
0 3 1
--> min(A)

ans =

0 1 1
--> min(A,[],2)

ans =

1
1
0

--> min([5,3,2,9])

ans =

2

以下の例は入力引数同士で比較する例です。

--> a = int8(100*randn(4))

a =

-3 59 -5 110
-14 70 -16 -3
69 -93 1 118
-23 0 16 -74

--> b = int8(100*randn(4))

b =

64 -51 74 84
-40 -62 -84 -126
-102 -12 43 -54
69 50 -56 29

--> min(a,b)

ans =

-3 -51 -5 84
-40 -62 -84 -126
-102 -93 1 -54
-23 0 -56 -74


--> a = randn(2)

a =

-0.8512 -0.6258
0.8415 1.3391

--> min(a,0)

ans =

-0.8512 -0.6258

--------------------------------------------------------------------
max 最大値

  [構文] 
 [y,n] = max(x,[],d)
 [y,n] = max(x)
 xは、最小値を求める行列、dは行および列を指定する引数。出力引数nは最小値のインデックス。 
 y = max(x,z)
この文法ではx,zを比較して小さい値を同行列サイズで出力。

  [例]
--> A = [5,1,3;3,2,1;0,3,1]

A =

5 1 3
3 2 1
0 3 1


--> max(A)

ans =

5 3 3


--> max(A,[],2)

ans =

5
3
3

--> max([5,3,2,9])

ans =

9


--> a = int8(100*randn(4))

a =

0 115 15 -20
-26 127 1 -41
-12 5 -84 52
85 -108 -7 -100

--> b = int8(100*randn(4))

b =

-30 14 -33 -69
-62 -71 48 8
-52 2 -95 75
40 44 120 -4

--> max(a,b)

ans =

0 115 15 -20
-26 127 48 8
-12 5 -84 75
85 44 120 -4

--> a = randn(2)

a =

2.2822 -0.9318
-0.3667 0.5529

--> max(a,0)

ans =

2.2822 0
0 0.5529

-------------------------------------------------------------------------------------------------------------------------------------------
ceil 丸め込み(ceil)

  [構文]
 y = ceil(x)
入力引数より大きい最小の整数を出力します。入力引数の型は保存され出力引数の型に反映されます。
  [例] 
--> ceil(4.312)

ans =

5

--> ceil(-4.312)

ans =

-4
型の保存を表します。 
--> y=ceil(4.05f)

y =

5

--> who y
Variable Name Type Flags Size
y float [1 1]
--> y=ceil(4.05)

y =

5

--> who y
Variable Name Type Flags Size
y double [1 1]


-------------------------------------------------------------------------------------------------------------------------------------------
floor 丸め込み(floor)

  [構文]
 y = floor(x)
入力引数より小さい最大の整数を出力します。入力引数の型は保存され出力引数の型に反映されます。 

  [例]
--> floor(4.312)

ans =

4

--> floor(-4.312)

ans =

-5
型の保存を表します。 
--> y=floor(4.05f)

y =

4

--> who y
Variable Name Type Flags Size
y float [1 1]
--> y=floor(4.05)

y =

4

--> who y
Variable Name Type Flags Size
y double [1 1]

-------------------------------------------------------------------
round 丸め込み(round)

[構文]
 y = round(x)
入力引数に一番近い整数を出力します。入力引数の型は保存され出力引数の型に反映されます。 

[例]
--> round(4.312)

ans =

4

--> round(4.812)

ans =

5
--> y=round(3.023f)

y =

3

--> who y
Variable Name Type Flags Size
y float [1 1]
--> y=round(3.023)

y =

3

--> who y
Variable Name Type Flags Size
y double [1 1]

-------------------------------------------------------------------
cumsum 累計加算

[構文]
 y = cumsum(x,d)
dは次元。 
 
[例]
--> A = [5,1,3;3,2,1;0,3,1]

A =

5 1 3
3 2 1
0 3 1

--> cumsum(A)

ans =

5 1 3
8 3 4
8 6 5


--> cumsum(A,2)

ans =

5 6 9
3 5 6
0 3 4





--> B(:,:,1) = [5,2;8,9];
--> B(:,:,2) = [1,0;3,0]

B =

(:,:,1) =

5 2
8 9

(:,:,2) =

1 0
3 0

--> cumsum(B,3)

ans =

(:,:,1) =

5 2
8 9

(:,:,2) =

6 2
11 9

-------------------------------------------------------------------
cumprod 累積乗算
 
 [構文]
 y = cumsum(x,d)
dは次元。 
 
 [例]
--> A = [5,1,3;3,2,1;0,3,1]

A =

5 1 3
3 2 1
0 3 1

--> cumprod(A)

ans =

5 1 3
15 2 3
0 6 3


--> cumprod(A,2)

ans =

5 5 15
3 6 6
0 0 0




--> B(:,:,1) = [5,2;8,9];
--> B(:,:,2) = [1,0;3,0]

B =

(:,:,1) =

5 2
8 9

(:,:,2) =

1 0
3 0

--> cumprod(B,3)

ans =

(:,:,1) =

5 2
8 9

(:,:,2) =

5 0
24 0

-------------------------------------------------------------------
sum 合計
 
 [構文]
 y = sum(x,d)
dは次元。

 [例]
--> A = [5,1,3;3,2,1;0,3,1]

A =

5 1 3
3 2 1
0 3 1



--> sum(A)

ans =

8 6 5


--> sum(A,2)

ans =

9
6
4

-------------------------------------------------------------------
mean 平均

 [構文]
 y = mean(x,d)
dは次元。
 
 [例]
--> A = [5,1,3;3,2,1;0,3,1]

A =

5 1 3
3 2 1
0 3 1


--> mean(A)

ans =

2.6667 2.0000 1.6667


--> mean(A,2)

ans =

3.0000
2.0000
1.3333

-------------------------------------------------------------------
var 分散

 [構文]
 y = var(x,d)
dは次元。
 
 [例]
--> A = [5,1,3;3,2,1;0,3,1]

A =

5 1 3
3 2 1
0 3 1


--> var(A)

ans =

6.3333 1.0000 1.3333



--> var(A,2)

ans =

4.0000
1.0000
2.3333 
 

--------------------------------------------------------------------
conj 共役複素数

 [構文]
 y = conj(x)

 [例]
--> conj(3+4*i)

ans =

3.0000 - 4.0000i




--> conj([2,3,4])

ans =

2 3 4


--> conj([2.0+3.0*i,i])

ans =

2.0000 - 3.0000i 0.0000 - 1.0000i

--------------------------------------------------------------------
real 実部
 
 [構文]
 y = real(x)
 
 [例]
--> real(3+4*i)

ans =

3


--> real([2,3,4])

ans =

2 3 4


--> real([2.0+3.0*i,i])

ans =

2 0
 
-------------------------------------------------------------------
imag 虚部
 
[構文]
 y = imag(x)
 
[例]
--> imag(3+4*i)

ans =

4

--> imag([2,4,5,6])

ans =

0 0 0 0


--> imag([2.0+3.0*i,i])

ans =

3 1
 
-------------------------------------------------------------------

abs 絶対値

 [構文]
 y = abs(x)
 
 [例]
--> abs(3+4*i)

ans =

5


--> abs([-2,3,-4,5])

ans =

2 3 4 5


--> abs([2.0+3.0*i,i])

ans =

3.6056 1.0000
 
------------------------------------------------------------------
prod 乗算
 
 [構文]
 y = prod(x,d)
dは次元。
 
 [例]
--> A = [5,1,3;3,2,1;0,3,1]

A =

5 1 3
3 2 1
0 3 1


--> prod(A)

ans =

0 6 3


--> prod(A,2)

ans =

15
6
0

-------------------------------------------------------------------
hex2dec 16進数から10進数への変換  

 [構文]
 y = hex2dec(x)
 
 [例]
--> hex2dec('3ff')

ans =

1023


--> hex2dec(['0ff';'2de';'123'])

ans =

255
734
291
 

-------------------------------------------------------------------
dec2hex 10進数から16進数への変換  

 [構文]
 y = dec2hex(x)
 y = dec2hex(x,n)
nは表現するビット数。
 
 [例]
--> dec2hex(1023,4)

ans =

03ff 

--> dec2hex(1023)

ans =

3ff


--> dec2hex(58128493)

ans =

376f86d

--------------------------------------------------------------------
num2hex 数値から16進数への変換 
 
[構文]
 y = num2hex(x)
出力は文字列となります。 
[例]
--> y=num2hex([1 0 0.1 -pi inf nan])

y =

3ff0000000000000
0000000000000000
3fb999999999999a
c00921fb54442d18
7ff0000000000000
7ff8000000000000

--> who y
Variable Name Type Flags Size
y string [6 16]


--> num2hex(float([1 0 0.1 -pi inf nan]))

ans =

3f800000
00000000
3dcccccd
c0490fdb
7f800000
7fc00000

--------------------------------------------------------------------
all すべて真 
 
 [構文]
 y = all(x,d)
指定された次元dで論理積処理を行います。正直dが効いていないか??バグ?
 
 [例]
--> A = [1,0,0;1,0,0;0,0,1]

A =

1 0 0
1 0 0
0 0 1


--> all(A)

ans =

0



--> all(A>=0)

ans =

1


--> all(A,2)

ans =

1 0 0
1 0 0
0 0 1
 

 --------------------------------------------------------------------
any どれか真 

 [構文]
 y = any(x,d)
指定された次元dで論理和処理を行います。
 
 [例]
--> A = [1,0,0;1,0,0;0,0,1]

A =

1 0 0
1 0 0
0 0 1

--> any(A)

ans =

1
 
--> any(A,1)

ans =

1 0 1
 
--> any(A,2)

ans =

1
1
1

--------------------------------------------------------------------
deal 同時多数割り当て
 
[構文]
 [a,b,c,...] = deal(expr)
一回のコールで複数の出力を割り当てることができます。関数maxが良い例です。 
 
[例]
--> A={'test',0123,'demo'}

A =

['test'] [123] ['demo']
 
--> [a,b,c]=deal(A{:})
a =

test

b =

123

c =

demo
 

--------------------------------------------------------------------
dot 内積 

[構文]
 y = dot(x,z)
 y = dot(x,z,dim) 
内積を計算します。 
 
[例]
--> dot([1 1 1],[0 0 0])

ans =

0

--> dot([1 1 1],[1 0 1])

ans =

2

--------------------------------------------------------------------
getfield フィールド定数の取得

[構文]
 y = getfield(x,'fieldname')
 y = getfield(x, {m,n}, 'fieldname')
 
y = x.fieldname、y = x(1).fieldnameまたはy = x(m,n).fieldnameなどと同じ内容です。
 
[例]
--> test

ans =
name: ['test1']
value: ['1']
explanation: ['structure']
--> getfield(test,'value')

ans =

1

--> test.value

ans =

1

-------------------------------------------------------------------------------------------------------------------------------------------
test 
[構文]
 y = test(x)
結局all関数と同じ。全てが論理的に真かどうかを判定する。
 
[例]
--> A=randi(zeros(3),ones(3))

A =

0 1 1
0 1 0
0 1 0

--> test(A)

ans =

0

--> all(A)

ans =

0

-------------------------------------------------------------------------------------------------------------------------------------------
vec ベクトルのリシェイプ 
 
 [構文]
 y = vec(x)
n次元の行列を列行列に変換します。
 
 
 [例]
--> y=rand(3)

y =

0.3759 0.3580 0.0990
0.0183 0.7604 0.4972
0.9134 0.8077 0.3478

--> vec(y)

ans =

0.3759
0.0183
0.9134
0.3580
0.7604
0.8077
0.0990
0.4972
0.3478
 
-------------------------------------------------------------------------------------------------------------------------------------------
std 標準偏差 
 
 [構文]
 y = std(x,d)
dは偏差をとる次元。
 
 
 [例]
--> y=randn(1000,1);%正規分布の標準偏差は1
--> std(y)

ans =

0.9883

--------------------------------------------------------------------------------------
diff 差分関数 
 [構文]
 y = diff(x)
 y = diff(x,k)
 y = diff(x,k,dim)
* dimはdimension。
 [例]
 
--> a=1:5;
--> a
ans =
 1 2 3 4 5
--> diff(a)
ans =
 1 1 1 1
 
--------------------------------------------------------------------------------------
sub2ind 多次元インデックスから線形インデックスの変換 
 
 [構文]
   y = sub2ind(sizevec,d1,d2,...,dn)
dsizevecは配列のサイズ。
 
 [z(d1(1),d2(1),...,dn(1)),...,z(d1(n),d2(n),...,dn(n))]
の形式を、
  z(sub2ind(size(z),d1,d2,...,dn))
に変換。
 [例]
--> A=[1,2,3
4,5,6
7,8,9
10,11,12]
A =
  1  2  3
  4  5  6
  7  8  9
 10 11 12

--> sub2ind(size(A),4:7)
ans =
 4 5 6 7