2020年3月22日日曜日

MATLABことはじめ 1

計算ツールはMathematica派だし,必要なものはPythonなりでコードを書いちゃえばいい派なので避けてきたのですが,制御をやる上でちょっと使ってみよう(使った上でPythonにもどるとか)と思い立ち始める次第です.

このエントリーは何かをまとめるというよりは,随時メモを乱投するスタンスで書いてみようと思います.

エントリーを区切ったり,追加したりは気分次第です

MATLAB

MATLAB = Matrix Laboratory の略とな

いろいろ楽をするためにできたものだと思うけど,過去資産を利用するための学習コストが見合うのか.いや,迷わず信じる.信じたものしか救われないのではないだろうか.私の信仰心がどこまで続くかを楽しんでもらえれば良いと思います.

各行の改行は;でおこなう. C言語とおなじ.

行列 

インデックスは0からではなく1から始まる. スペースで区切ってもカンマで区切ってもあり(oo).

行列の場合2行目以降は;で改行する.

{}はCell Array. 配列の配列を使用する.

a=[1 2 3]
b=[1,2,4]
c=[1,2;3,4]
%e=[a,b,c];
%disp(e); これはディメンジョンが合わないのでエラーになる
f={a,b,c};
disp(f);

配列要素へのアクセスは[]ではなく()を使う(oo).

% disp(c[1,1]);これはエラー
disp(c(1,1));

行列の演算.

x,y,zの座標を格納した連続データに対して指定した座標分平行移動したい.

次元があっていれば,各要素要素にたいして演算をしてくれる. 行と列を区別することに注意する


points(1,1) =  0;points(2,1) = 0;points(3,1) = 0;
points(1,2) =  5;points(2,2) = 0;points(3,2) = 5;
points(1,3) = 10;points(2,3) = 0;points(3,3) = 0.5;
points(1,4) = 15;points(2,4) = 0;points(3,4) = 5;
disp(points);

TranslationVector=[100;10;30];
%これをTranslationVector=[100,10,30];とすると次の演算でエラーになる
d=points+TranslationVector;
disp(d)
%やっていることは次の文と同じ. forはできるだけ使わないようにしたい(心意気)
for i=1:4
    C(1:3,i)=points(1:3,i)+TranslationVector;
end
disp(C);

0 件のコメント: