公開関数を利用するサンプルプログラムとして、tips_sample.m内の内容を載せています。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
%------------------------------------------------- % Program tips % 各種解析プログラムの利用例 % Data: 2012/01/10 % Modified: 2012/01/11 %------------------------------------------------- % % このプログラムは、サンプルデータの読み込みからその先、 % 各種解析手法の適用例をまとめています。データ読み込み % 箇所や変数など、用途に合わせて変更することができます。 % Author(s): H. Tanaka (Nagoya University) %*************************** 解析の準備 **************************** %%% データ読み込み fnm='20mm_sample.txt'; % データファイル名 data=dlmread(fnm,',',1,0); % カンマ区切り、1行0列をヘッダ行として読み飛ばし %% 区切り子の種類⇒',':カンマ/' ':スペース/'\t':タブ %% 読込関数の種類⇒dlmread,csvread,textread,load,fread,... disp(textread(fnm,'%s',1)); % fnmの1行目のみ表示 t=data(:,1); is=data(:,2); % dataの1列目、2列目を変数t,isに代入 ne=data(:,3); te=data(:,4); % dataの3列目、4列目を変数ne,teに代入 dt=mean(diff(t)); % t(2:end)-t(1:end-1)の平均値=サンプリング間隔dt len=length(t); % tの長さlen %%% 生データプロット figure(1); % 図1を新規作成 plot(t,is); % tを横軸、isatを縦軸としてプロット %% 1次元プロットの種類⇒plot,plotyy,semilogx,semilogy,loglog,bar,errorbar,... %% 2次元プロットの種類⇒contour,contourf,... %% 3次元プロットの種類⇒surf,mesh,... %%% グラフィックプロパティの設定 xlabel('time [ms]'); % ラベル ylabel('I_{sat} [A]'); % アンダーバー(_)で下付き、ハット(^)で上付き title(fnm); % タイトル grid on; % グリッドラインを表示 xlim([0,0.5]); % 横軸範囲を指定 set(gca,'PlotBoxAspectRatio',[1,0.4,1]); % カレントの座標軸(gca)のアスペクト比を変更 %%% 生データを切り出してからプロット lin=find(0<=t&t<=0.5); % [0,0.5]ms範囲内の行番号を検索 figure(2); plot(t(lin,1),is(lin,:)); % [0,0.5]ms範囲内のt、isを切り出しプロット close(2); % 図2の消去 %*************************** 手軽な解析 **************************** %%% 確率密度関数:pdffun [py1,px1]=pdffun(is,[],'ON'); % 横軸を規格化した確率密度関数の計算 [py2,px2]=pdffun(is,[],'OFF'); % 横軸を規格化しない確率密度関数の計算 figure; % 図を新規作成 subplot(1,2,1); % プロットボックスを1x2に分割、その1つ目に座標軸作成 semilogy(px1,py1); xlabel('(I_{sat}-\mu)/\sigma'); title('pdffun'); subplot(1,2,2); semilogy(px2,py2); xlabel('I_{sat} [A]'); title('pdffun'); %%% Skewness,Flatness:skewfun,flatfun disp(['skewness=' num2str(skewfun(is))]); % skewnessの計算と文字配列化、その後表示 disp(['flatness=' num2str(flatfun(is))]); % flatnessの計算と文字配列化、その後表示 %%% パワースペクトル:fftfun nmax=2^10; % 離散フーリエ変換の点数 [pw,frq]=ensemble2(@fftfun,nmax,is,dt); % パワースペクトルの計算 figure; loglog(frq,pw); % 周波数frqとパワー密度pwの両対数プロット axis tight; % 座標軸の範囲を狭くする xlabel('frequency [kHz]'); % dtの単位がmsのためfrqの単位はkHz ylabel('power density'); title('fftfun'); %%% 数値フィルタリング:fftfil2 fran=[20,60]; % フィルタ範囲[10,60]kHz isf1=fftfil2(is,nmax,dt,fran); % フィルタ範囲の抽出 isf2=fftfil2(is,nmax,dt,-fran); % フィルタ範囲の除去 figure(1); % 図1をカレントに変更 hold on; % カレントのグラフの上書き消去防止 plot(t,isf1,'r--',t,isf2,'g:'); % isf1を赤破線、isf2を緑点線でプロット %% 線の種類⇒'-':実線/'--':破線/':':点線/'-.':鎖線 %% 色の種類⇒'b':青/'r':赤/'g':緑/'y':黄/'m':マジェンタ/'c':シアン legend('raw','filter1','filter2'); % 凡例 title('fftfil'); %%% 移動平均、移動分散、移動モーメント:moment2 const=1e3; % 移動平均点数 [ism1,ism2,ism3,tm]=moment2(is,t,const,[1,2,3]); % 1-3次の移動中心モーメントを計算 figure; subplot(2,1,1); plot(tm,[is,ism1]); % isとisの移動平均を同時プロット ylabel('I_{sat},[A]'); skew=ism3./ism2.^1.5; % 移動skewnessの計算 subplot(2,1,2); plot(tm(~isnan(skew)),skew(~isnan(skew)),'r'); ylim([0,2]); % 移動skewnessのプロット hold on; plot([0,10],skewfun(is)*ones(1,2),'k--'); % 全時間でのskewnessのプロット xlabel('t [ms]'); ylabel('Skewness'); title('moment2'); %%% 自己・相互相関係数:corfun dmax=50; % 時間遅れ・進みの最大点数の指定 [cor,lag]=corfun(is,dt,dmax,'COE'); % 自己相関係数の計算、'FUN'で相関関数 figure; plot(lag,cor); % 自己相関係数のプロット [cor,lag]=corfun([is,te],dt,dmax,'COE'); % 相互相関係数の計算 hold on; plot(lag,cor,'r--'); % 相互相関係数のプロット xlabel('\tau [ms]'); ylabel('correlation coefficient'); title('corfun'); %%% 条件付き平均波形:condfun dmax=50; th=mean(is,1)+2*std(is,1,1); % しきい値を平均値+標準偏差の2倍に設定 [cx,lag]=condfun(is,th,1,dt,dmax,'peak'); % 条件付き平均波形を計算 figure; subplot(2,1,1); plot(lag,cx); % 条件付き平均波形をプロット ylabel('i_{sat} [A]'); title('condfun'); [cx,lag]=condfun(normalize([is,te],1),2,1,dt,dmax,'peak'); % 無次元化後に相互条件付き平均波形を計算 subplot(2,1,2); plot(lag,cx); % 相互条件付き平均波形をプロット xlabel('\tau [ms]'); ylabel('(i_{sat}-\mu)/\sigma,(T_e-\mu)/\sigma'); legend('I_{sat}','T_e'); %%% 待ち・持続時間分布:wdfun th=2; % しきい値を指定 [pwd,lag]=wdfun(normalize(is),th,sign(th),dt); % 待ち・持続時間分布を計算 figure; loglog(lag,pwd,'o','MarkerSize',6); % 複数の定義によりプロット xlabel('\tau [ms]'); ylabel('count'); title('wdfun'); return %*************************** 少し高度(?)な解析 **************************** %%% 同時確率密度関数:pdffun [py,px]=pdffun([ne,te],[],'OFF'); % neとteの2列を入力引数に指定 figure; surf(px(:,1),px(:,2),py'); % 同時確率密度関数の2次元プロット shading interp; lighting phong; % 離散点間を補間、照明設定変更 axis tight; view([15,85]); % 軸の範囲、視点を変更 xlabel('n_e [10^{19}m^{-3}]'); ylabel('T_e [eV]'); colorbar('vert'); % カラーバー axes('position',[0.1,0.6,0.3,0.3]); % 小さな座標軸を追加 plot(ne,te,'.k','MarkerSize',1); % 散布図をプロット title('pdffun'); %%% クロススペクトル:cfftfun nmax=2^10; [cpw,frq]=ensemble2(@cfftfun,nmax,[ne,te],dt); % クロスをスペクトルを計算 figure; subplot(2,1,1); loglog(frq,abs(cpw)); % クロスパワーをプロット ylabel('cross-power density'); xlim([1e0,1e3]); subplot(2,1,2); semilogx(frq,angle(cpw)*180/pi); % 位相差をプロット xlabel('frequency [kHz]'); ylabel('phase [deg]'); xlim([1e0,1e3]); title('cfftfun'); return close all; % 図を全て消去 %*************************** その他の解析 **************************** %% 連続ウェーブレット変換:cwtfun %% 連続逆ウェーブレット変換:icwtfun %% コヒーレンス:cohfun %% バイコヒーレンス:bcfun %% カルバックライブラーのダイバージェンス:kldfun %% PDF型の再構成:rpfun %% 経験的固有直交展開:podfun %% 特異値分解:svdfun %% 構造関数:stcfun %% フィッティング:fitting