MATLAB

平均値

MATLABでの平均値計算 X=[0 1 2; 3 4 5; 6 7 8] mean(X) % 各列の平均 mean(X,1) % 各列の平均 mean(X,2) % 各行の平均 X(:) % 行ベクトルに変換 mean(X(:)) % すべての要素の平均

大規模データセットの並べ替えによる効率化

値が昇順に並べ替えされていない場合,データの近似に時間がかかることがある。オリジナルのデータベクトル x と yから,並べ替えたベクトル x_sorted と y_sorted を作成。 [x_sorted, i] = sort(x); y_sorted = y(i);

カーブフィティング

連立方程式を解くような記述で,最小自乗法をつかえる。すごい。% 非多項式項をもつ線形モデル % y=Xa -> X\y = X\Xa = a clc; close all; t = [0 .3 .8 1.1 1.6 2.3]'; y = [0.5 0.82 1.14 1.25 1.35 1.40]'X = [ones(size(t)) exp(-t) t.*exp(-t)]; a= X\y…

タイトルや軸ラベルに複数行の文字列

title({'グラフのタイトル';'サブタイトル'})

コンターの作成

[X,Y,Z] = peaks; v = [-10:1:10] % レベルの設定 [C,h]=contourf(X,Y,Z,v) % 作図 clabel(C,h) % ラベル表示 caxis([-10 10]) % カラーバーのレンジ colorbar % カラー shading flat % 境界線を消す

% 減衰率の計算 clc; clear all;f=inline('exp(-0.1*x).*cos(x)'); % 関数定義x=[0:0.01:10*pi]; y=f(x); y_d=[0 diff(y)]; % Data作成 idx_s= find(abs(y_d)

Helpの使い方

コマンドウィンドウから,helpwinと打つ。この方がコマンドを探しやすい(MTLAB5のときは,このHelpと同じだった)。

文字列の扱い

ttl=char('上側','下側') ii=1 ylabel([ttl(ii,:)]):を使わないと上しかでないので注意

重複したデータを削除する場合(補間データを作る場合に利用)

a=sortrows(a,[1 2]); diff(a(:,1)); s=find(diff(a(:,1))==0); a=a(s,:)a = 1 83 2 1 2 32 3 66 1 95 3 41a = 1 83 2 1 3 41

行の並び替え

行をグループとしてデータを並び替えるには,sortrowsが便利。 a行列をまず1列で並び替え,1列の値が等しい条件で2列を並び替える場合は,sortrows(a,[1 2])

evalを使ったデータファイル名の変更

clear all; close all; name='vibr_050415_1' load([name '.dat']); eval(['aaa=' name '(1:2^15,:);']); save aaa;

TIPS

Mファイル中での関数定義: ustep=inline('ceil(x./x)'); Figの位置決め: set(gcf,'position',[50 50 800 120*i]) 軸の目盛: set(gca, 'ylim', [ 0 10 ], 'ytick', [0:1:10]);

TIPS

title(['Initial Temp. = ', num2str(temp_s), '℃']);の[ ] を書くのを良く忘れるので注意すること。 熱伝導逆解析では,データサンプリングの無次元時間Fo(フーリエ数)の選択する際,変化の速さ>ノイズの大きさとしないと,逆解析の結果が不安定(振動)と…

の文法ミスメモ

-q(1:len)/1e6' は文法ミス -q(1:len)'/1e6 が正しい。

板形状評価プログラムをMATLABで作成。3D表示,多項式近似,移動平均とか簡単なコマンドでできるので便利。

移動平均(4点評価): a = 1; b = [1/4 1/4 1/4 1/4]; filter(b, a, z) 移動平均 (n点評価) : a = 1; b = 1/n * ones(n,1); filter(b, a, z) 多項式近似: p=polyfit(x,z,2); 多項式近似値: polyval(p,x);