数列とかの計算に結構特化してる
楽に動かす方法
○○○.mならoctaveを起動して,○○○と打ち込めば書いてある順番に実行する.
関数化
function *****
と最初に書く(*****はなんか関数名で)
endfunction
と最後に書いておく
別のプログラムないで*****と書けばそれを実行する.
例 test1.m
function y = test1(x)
y=x*100;
endfunction
このプログラムを作っておき,他のプログラム内に書く.例えば
test1(20)
と書くと
ans = 2000
となる.20でなく変数でもおっけー.
よく使うのなら関数化しておこう.書くのがめんどい時とかもね.
なんかルールがあるかもしれんがファイル名と関数名は一致させておこう
変数の書き方
f(x)=x^2+4x;
と言った感じのものをoctaveで扱うには
f=@(x)x^2+4x;
と書く
コマンドいろいろ
| inv(z) |
zの逆行列を求める |
| abs(z) |
zの絶対値を取る |
| real(z) |
zの実数部を取る |
| imag(z) |
zの虚数部を取る |
| conj(z) |
zの共役複素数を取る |
| rem(x) |
xの余りを取る |
| floor(x) |
xの切捨て |
| ceil(x) |
xの切上げ |
| round(x) |
四捨五入 |
| input() |
入力を促す |
| disp(x) |
xを表示する |
| unifrnd(x,y) |
xからyの範囲で乱数 |
| sum(x) |
xの中身を全て足す |
| eig(x) |
固有値 xy = λy を出す |
| load("x") |
ファイルxを読み込む |
| quad(x,a,b) |
式xのaからbまでの積分 |
計算の時
A=[1 2 3] , B = [4 5 6]としたとき
A + B は
ans = [5 7 9]と出すことができるが
A * B はできない。しかし A .* Bとすれば
ans = [4 10 18]と出すことができる。
これはようするに
A.*B = [1*4 2*5 3*6]と同じ行列の部分のみで掛け算をしている。
imageの横軸を対数で
グラフならsemilogyなどでできるが,画像ではベクトルが違うとか言われてできない.
やりかた
plotなりsubplotなりでまず画像を表示
その後
get(gca)
ここで色々情報が出るが,
xscale = linear
yscale = linear
zscale = linear
というのがある,ようするにxyz軸がすべて線形スケールであると言っている.
ここでどれかをlinearからlogにすれば対数スケールになる.
y軸を対数スケールにする
set(gca,'yscale','log')
これで変わる
配列の指定の方法
例として配列Xを使う
X =
ans(:,:,1) =
1 4 7
2 5 8
3 6 9
ans(:,:,2) =
10 13 16
11 14 17
12 15 18
ans(:,:,3) =
19 22 25
20 23 26
21 24 27
1.サブスクリプト指定
何行何列何チャンネルかで指定
例
X(2,3,2)
ans = 17
つまり2行3列2チャンネルの要素を取り出した
2.インデックス指定
全部まとめて何番目なのかで指定できる.
1,2,3とチャンネルは順番で続いてまとめられている
例
X(20)
ans = 20
Xの20番目を指定,順番はXの例ようになる
色変換
| コマンド |
使い方の例 |
補足とか |
| rgb2hsv |
Y=rgb2hsv(X/255) |
Xが元となるカラー画像,範囲が0~1.0なので256種類だったら255で割っておく.Y(:,:,1)がH,Y(:,:,2)がS,Y(:,:,3)がV |
| rgb2gray |
Y=rgb2gray(X) |
カラー画像Xをグレースケールに変換する,ちなみにRGBチャンネルのどれか一つだけにしたグレースケールではなかった |
| hav2rgb |
Y=hsv2rgb(X) |
hsv変換をrbg変換に戻す |
eps化
| print -depsc2 *****.eps |
カラーで |
| print -deps *****.eps |
白黒で |
最終更新:2012年11月20日 14:26