ひよこの外部記憶

めもおきば

MATLAB 基本操作

MATLABを画像処理に使っているので人によっては役に立たないかもしれません

メモ代わりに使っていたので体系的でもないです。

全部俺が書いたと思ったら大間違いだぜ


間違ってここにきちゃった人は「初心者によるMATLABメモ」というサイトをオススメします

全要素にアクセス

A = [1,0,0;2,0,0;3,0,0];
だったら
A(:)
sum(A(:)) = 6

画像ヒストグラム

%%% RGB画像
rgb_image = imread(image_file);
%%% R
imhist(rgb_image(:,:,1));

%%% G
imhist(rgb_image(:,:,2));

%%% B
imhist(rgb_image(:,:,3));

%%% HSV画像
hsv_image = rgb2hsv(rgb_image);

%%% H
imhist(hsv_image(:,:,1));

%%% S
imhist(hsv_image(:,:,2));

%%% V
imhist(hsv_image(:,:,3));


HSVの範囲は0〜1なのは仕様なのかな?
たまにVがやんちゃな範囲に飛ぶが何とかなるっぽい


行列の行、列の削除

例えばt = [8 1 6;
3 5 7;
4 9 2]

とあった時2行目削除したかったら
t(2,:) = []

とすれば2行目を詰めて
t = [8 1 6;
4 9 2]

としてくれる

同じサイズの行列として初期化

A = [1,2,3;
4,5,6]
Bを同じサイズで中身全部0の行列を作る(初期化用だったり)
B = zeros(size(A));
すると
B = [0,0,0;
0,0,0]

知ってるだけで結構便利
・・・ちなみに
zerosをonesとすると全部1の行列作ってくれます

パスについて

絶対パス相対パス共に「/」「\」のどちらでも使える(混在もアリ)だから

C:\Users\Documents/MATLAB/research
とかでもOK

ちなみに相対パス指定は

./MATLAB/research
みたいな感じで大丈夫

フルパス名を分解して利用

fileparts関数
(使用例)
image_name = '\\Vision_Code\Image\image.jpg'
[path,name]=fileparts(image_name) ;
とすると
path = \\Vision_Code\Image
name = image.jpg
となる

何に使うのかって?知らんがな

関数ヘルプ作る

簡単で、作ったファンクションの下にコメントアウトで書く~
例)hoge.mが
function tom = hoge(a,b)
%%% INPUT
%%% a : point a
%%% b : point b
%%% OUTPUT
%%% tom : average value

%%% Calculate average
tom = (a+b)/2;
だとすると
help hoge
と打つと
%%% INPUT
%%% a : point a
%%% b : point b
%%% OUTPUT
%%% tom : average value
が表示される

figureにタイトルつける(青い所)

figure('Name','ここにタイトル入れる');

ディレクトリに含まれるファイルの数を知る [#f83fd508]

ループ数とかでよく使うよね

length(dir('C:\Users\someone\Desktop\hoge')

hogeに含まれるファイルの数が求められる(「.」「..」が含まれるからファイル数は見た目より2個増えます)~
それがイヤなら↓みたいに

length(dir('C:\Users\someone\Desktop\hoge\*.jpg'))

みたいにすると(ここではjpgのファイル数)上手く数えられると思います

構造体

構造体のフィールドを[]っで囲むと
こういうのがあったとして
S(1).color = 'red';
S(1).position = 20;
S(2).color = 'green';
S(2).position = 35;
S(3).color = 'yellow';
S(3).position = 78;

こうすると
A = [S.color];
Aの値はこうなる
A = [S(1).color, S(2).color S(3).color]
つまり
A = [red green yellow]

こうすると
A = {S.color};
セルになる
A = {S(1).color, S(2).color S(3).color}
つまり
A = 'red' 'green' 'yellow'

どっかのサイトに詳しく書いてあったなぁ・・・てかこの説明もそっからパクtt (ry

型!!

なんとMATLABのデフォルトの変数の型はdoubleなので
a = 1;
image(a:100,a:200)
とかすると
警告: 整数演算子は、インデックスとして使われる場合のコロン演算子で必要です
と出たりする!!!

                                                      • 超基本終わり