超音波流体屋のプログラム備忘録

matlab-octave

最終更新:

usapfrog

- view
管理者のみ編集可

条件分岐

インタラクティブだと動かないかも。
  1. if condition
  2. statement
  3. elseif condition
  4. statement
  5. else
  6. statement

インタラクティブで動かすなら三項演算子的に
var = (condition)*x + (!condition) *y 

ループ

できるだけ行列演算で済ます方が賢い
  1. for I=1:col
  2. A(:, I) = dat((I-1)*row+1:I*row);


ファイル読み書き

データをスクリプト言語で行列に整えてload
saveして結果をスクリプト言語処理が楽。

Cとほぼ同関数・フォーマットの入出力も可能
  1. fid = fopen('filename', 'rb')
  2. dats=fread(fid, [row, Inf], 'double');
  3. fclose(fid)

  1. fid = fopen('filename', 'r')
  2. line = fgetl(fid);
  3. while ischar(line)
  4. disp(line)
  5. line = fgetl(fid);
  6. fclose(fid)

  1. fid = open('filename', 'w[b]')
  2. fprintf(fid, 'var %d', var)
  3. fwrite(fid, vars, 'double');
  4. fclose(fid)

注意事項

  • インデントにtab文字は避けた方が良い。バッチランでは問題ないが、インタラクティブでバグる。
tab tab と入った時にターミナルなどの機能で補完がなされるため。
テキストエディタの設定でmatlabモードはtabをスペースに変換する設定にする。
  • 複素数で一次元gradient関数を取るときは、複素共役をとること。そのまま入力すると虚数の符号が逆転する。二次元のときは問題無し。なんでだろね。
dy = gradient(conj(y));

matlabでのみエラー

  • 算術+代入演算子(+=, -=, *=, /=)
  • ダブルクォーテーションでの記述

重回帰分析

z=a+b*x+c*yのとき
X=[ones(size(x)), x, y]
[a;b;c]=X¥zで求まる。

参考

目安箱バナー