パッケージ内ファイルの説明

このページでは関数パッケージの圧縮ファイル中に含まれる各ディレクトリおよびファイルに関して説明を行っています。順次拡充させていく予定です。


analysis

このディレクトリは講座で紹介された各統計解析手法を実現する関数ファイルを含みます。

fftfun.m

パワースペクトルを求めます。
  [PW,FRQ]=FFTFUN(X,DT)はサンプリング間隔DTの単数列
  の時系列信号XのパワースペクトルPWと、対応する周波数
  FRQを返します。計算には高速フーリエ変換を用いるため
  離散入力Xは2のべき乗個数のみ使用されます。ウィンド
  ウとしてCOSINE窓が適用されます。
 
  [PW,FRQ]=FFTFUN(X,DT,WINDOW)によりウィンドウの種類
  を選ぶことができます。選択可能なウィンドウは以下の
  通りです。
 
        'COS':コサイン型ウィンドウ
        'TRAP':台形型ウィンドウ
        'NONE':ウィンドウ無し
 
  [PW,FRQ]=FFTFUN(X,DT,[],SW)はSW=1のとき、無次元化
  信号のパワースペクトルを計算します。

cfftfun.m

クロススペクトルを求めます。
  [CPW,FRQ]=CFFTFUN(X,DT)はサンプリング間隔DTの二列の
  時系列信号XのクロススペクトルCPWと、対応する周波数FRQ
  を出力します。計算には高速フーリエ変換を用いるため、
  離散入力Xは2のべき乗個数が使用されます。ウィンドウは
  COSINE窓が適用されます。
 
  [CPW,FRQ,K,Q,TH]=CFFTFUN(X,DT)は、コスペクトルK、クオド
  スペクトルQ、および位相差THを出力します。ここで、各値は
  K=REAL(CPW)、Q=-IMAG(CPW)、TH=ATAN2(Q,K)により計算されます。
  
  関数ENSEMBLEを使用する場合には、-pi<=TH<=piであることから
  平均化されたTHは必ずしも正しくありません。TH=ATAN2(Q,K)
  または-ANGLE(CPW)により再計算してください。
 
  [CPW,FRQ]=CFFTFUN(X,DT,WINDOW)によりウィンドウの種類を
  選択できます。
 
        'COS':コサイン型ウィンドウ
        'TRAP':台形型ウィンドウ
        'NONE':ウィンドウ無し
 
  参考:FFTFUN, CORFUN

corfun.m

自己・相互相関関数、または自己・相互相関係数を求めます。
  [COR,LAG]=CORFUN(X,DT)はサンプリング間隔DTの列ベクト
  ルXの相関係数を出力します。ここでXが単数列ベクトルの
  ときCORには自己相関係数、Xが複数列ベクトルのときCOR
  には相互相関係数が代入されます。また、対応する時間遅
  れLAGが返されます。
 
  [COR,LAG]=CORFUN(X)はサンプリング間隔を1として相関
  係数を求めます。
 
  [COR,LAG]=CORFUN(X,DT,DMAX)は時間遅れ・進みの方向に
  DMAX点ずれた点までを計算します。入力Xが大きいときは
  DMAXを小さくすることで計算時間を大幅に短縮すること
  ができます。
  
  [COR,LAG]=CORFUN(X,DT,DMAX,TYPE)はTYPE='FUN'のとき
  CORに相関関数を出力します。これは入力変数Xの単位の
  二乗の単位を有します。TYPE='COE'のときは相関係数を
  出力します。

pdffun.m

確率密度関数を求めます。
  [PY,PX]=PDFFUN(X)は列ベクトルXの無次元化した確率密度関数
  (PX,PY)を出力します。PXには[-3.95:0.1:3.95]'を返します。
  XがN列のとき、N次元の結合確率密度関数を計算します。この
  ときPXはN列、PYはN次元となります。
  
  [PY,PX]=PDFFUN(X,PDFSET)はPDFSET=[BIN,DIV]に従ってPDFを
  計算します。このときDIVは偶数でなくてはなりません。
  
  [PY,PX]=PDFFUN(X,[],'OFF')はPDFを無次元化しません。

rpfun.m

確率密度関数の再構成パラメータを求めます。
  [PX,Q,R]=RPFUN(X)は単数列ベクトルXのPDF型再構成パラメータ
  Q,Rを出力します。Q,RはそれぞれXの無次元化信号の一階微分の二乗の
  条件付き平均、二階微分の条件付き平均です。
  PXには[-3.95:0.1:3.95]'を返します。
  
  [PX,Q,R]=RPFUN(X,PDFSET)はPDFSET=[BIN,DIV]に従ってパラメータを
  計算します。このときDIVは偶数でなくてはなりません。
  
  [PX,Q,R,RPY]=RPFUN(X)は再構成PDFのRPYを出力します。
  
  [PX,Q,R,RPY,PY0]=RPFUN(X)は通常のPDFであるPY0を付け加えます。
  また[PX,Q,R,RPY,PY0,PY1]=RPFUN(X)はデータ長半分を用いたPDFである
  PY1を返します。
  
  パラメータQ,Rの計算にはフーリエ変換を利用した微分プログラムDIFが
  用いられています。関数DIFの特性上、データ中央の離散点数半分しか
  Q,Rの計算には使用されません。
 
  参考:DIF

kldfun.m

カルバックライブラーのダイバージェンスを計算します。
  [D]=KLDFUN(PY)はPYの中心周り非ゼロ要素のみを使用して
  カルバックライブラーのダイバージェンス(KLD)を計算します。
  計算式はD(P||Q)=SUM(P*LOG(P/Q))です。
  出力Dは列方向にP、行方向にQとして格納されます。
  
  [D]=KLDFUN(PY,PX,PXRANGE)は閉区間PXRANGE=[PX0,PX1]にPXが
  収まる範囲でKLDを計算します。
  ゼロ要素が含まれる場合NaNを出力します。

condfun.m

条件付き平均波形を求めます。
  [CX,LAG]=CONDFUN(X,TH,DIRECTION,DT,DMAX)はDIRECTION=±1に対し、
  単数列ベクトルX(:,1)が閾値TH以上/以下となる連続行中で最大/
  最小となる点を中心に±dmax点ずつXを切り出し、平均化した
  条件付き平均波形CXを出力します。Xが複数列のとき、CXの1行目
  はAuto-CA波形、2行目以降はCross-CA波形となります。時間LAG
  はサンプリング間隔DTによりCXと対応し、平均化の基準点がLAG=0
  となります。
 
  [CX,LAG]=CONDFUN(X,TH,DIRECTION,DT,DMAX,MODE)では平均化の
  基準点の決定方法MODEを変更できます。標準ではMODE='PEAK'です。
  DIRECTION=±1に対して設定できるMODEは以下の通りです。
 
        'PEAK':最大/最小
        'UP':立ち上がり/立ち下がり
        'DOWN':立ち下がり/立ち上がり
        'MIDDLE':'UP'、'DOWN'の中間点
 
  [CX,LAG,LIN,NUM]=CONDFUN(X,TH,DIRECTION,DT,DMAX)は基準点
  の行番号LINとその個数NUMを返します。
 
  [CX,LAG]=CONDFUN(X,TH,DIRECTION,DT,DMAX,MODE,RD,RW)では
  連続行の持続行数と基準点同士の間隔をそれぞれRD、RWにより
  設定できます。例えばRD=[2,LENGTH(X)]のとき、基準点が1点
  のみ閾値以上/以下となる点は除外され、またRW=[2,LENGTH(X)]
  では基準点2点が1点をはさんで並ぶとき、2点目が除外されます。
  これらの設定はXに高周波ノイズが含まれるときに役立ちます。
 
  参考:OVERTH

wdfun.m

待ち時間・持続時間分布を計算します。
  [PW,PD,LAG]=WDFUN(X,TH,DIRECTION,DT)はDIRECTION=±1に対し、
  単数列ベクトルXが閾値TH以上/以下となっている持続時間の分布
  PDと、TH以下/以上となっている待ち時間の分布PWを計算します。
  また、サンプリング間隔DTを用いて各分布の横軸LAGを返します。
  このときPW、PDは規格課されていません。
  
  [PW,PD,LAG]=WDFUN(X,TH,DIRECTION,DT,DMAX)は待ち時間、持続
  時間がそれぞれLAG=1:DMAX*DTの分布を出力します。
  
  [PW,PD,LAG]=WDFUN(X,TH,DIRECTION,DT,DMAX,NORMALIZE)はNOR-
  MALIZEが'ON'のとき、各分布PW、PDを規格化します。
 
  参考:OVERTH

podfun.m

経験的固有直交展開を実行します。
  [PHI,LAMBDA]=PODFUN(X,DIM)は多点同時計測された複数列
  信号Xの分散共分散行列を作成し、その固有ベクトルPHI
  と固有値LAMBDAを返します。このとき時系列方向は次元DIM
  となります。この計算には膨大な計算量を要することに注意
  してください。
  
  [PHI,LAMBDA]=PODFUN(X)は時系列方向をXの最大長方向に
  設定します。
  
  [PHI,LAMBDA,AI]=PODFUN(X,DIM,MODE)はモードMODEで指定
  した基底の時系列信号AIを出力します。
 
  [PHI,LAMBDA,AI,RXF]=PODFUN(X,DIM,MODE)はMODEで指定
  した基底を用いて再構成した時系列信号の揺動成分RXFを
  返します。
 
  [PHI,LAMBDA,AI,RXF,RX]=PODFUN(X,DIM,MODE)は揺動成分
  RXFに平均値を加えた再構成信号RXを返します。MODEが
  [1:PROD(SIZE(X))/SIZE(X,DIM)]のときXとRXはほぼ等しく
  なります。
 
  [PHI,LAMBDA,AI]=PODFUN(X,DIM,MODE,TYPE)はTYPE='COE'の
  とき信号Xの相関行列を固有値分解します。

sspodfun.m

Snapshot POD解析を適用します。(ベータ版)
  [PHI,LAMBDA,AI]=SSPODFUN(X,DIM,MODE)は多点同時計測された
  複数列信号Xの空間方向に渡っての分散共分散行列を作成し、
  その固有ベクトルAIと固有値LAMBDAを返します。このとき
  時系列方向は次元DIMとなります。また指定したモードMODEの
  空間に渡る基底のPHIを出力します。この計算には膨大な計算量
  を要することに注意してください。
   
  参考:PODFUN

svdfun.m

特異値分解を実行します。
  [U,S,V]=SVDFUN(X,DIM)は多点同時計測された複数列の信号
  Xに特異値分解を適用します。ここで、時系列方向は次元DIM
  で指定します。時間変数の基底U(クロノ(chrono))、空間の
  基底V(トポ(topo))、特異値Sについて、サンプリング点数と
  検出地点の数のうち小さい数のモードに分解されます。時間
  変数の基底Uは1次元方向を時間方向とし、空間の基底Vは最後
  の次元がモードを示します。
 
  [U,X,V,RX]=SVDFUN(X,DIM,MODE)は指定したモードMODEを使用
  して再構成した信号RXを出力します。
 
  参考:PDFFUN

stcfun.m

構造関数を計算します。
  [SN,LAG]=STCFUN(X,N,DT)はサンプリング間隔DTの単数列
  ベクトルXの次数Nの構造関数SNと、対応する時間遅れLAG
  を返します。

cohfun.m

コヒーレンスを計算します。
  [COH,FRQ]=COHFUN(NMAX,X,DT)はサンプリング間隔DTの二列
  の時系列信号Xのコヒーレンス関数COHと、対応する周波数
  FRQを出力します。計算の中でXはNMAX点ずつに分割され、
  それぞれにおいて計算されたパワースペクトルPXX,PYY,お
  よびクロススペクトルPXYをコヒーレンスCOHの計算に用いま
  す。このとき内部でENSEMBLE2関数を使用するため、外部での
  併用は推奨されません。
 
  計算式は次のようになります。
        COH=abs(PXY).^2./(PXX.*PYY), 0<=COH<=1
  
  なお計算には高速フーリエ変換を用いるため、NMAXには2の
  べき乗が推奨されます。また窓関数WINDOWにはCOSINE窓が
  適用されます。
 
  [COH,FRQ]=COHFUN(NMAX,X,DTWINDOW)はWINDOWの種類を以下
  から選択できます。
 
        'COS':コサイン型ウィンドウ
        'TRAP':台形型ウィンドウ
        'NONE':ウィンドウ無し
 
  参考:CFFTFUN, ENSEMBLE

bcfun.m

バイコヒーレンスを計算します。(ベータ版)
  [BC,FRQ1,FRQ2]=BCFUN(NMAX,X,DT)はサンプリング間隔DTの単数列
  時系列信号XのバイスペクトルBCと、それに対応する周波数FRQ1
  およびFRQ2を出力します。計算の中でXはNMAX点ずつに分割され、
  それぞにおいてフーリエ展開された係数が計算に用いられます。
  
  なお計算には高速フーリエ変換を用いるため、NMAXには2の
  べき乗が推奨されます。また窓関数WINDOWにはCOSINE窓が
  適用されます。
 
  [BC,FRQ1,FRQ2]=BCFUN(NMAX,X,DT,WINDOW)はWINDOWの種類を以下
  から選択できます。
 
        'COS':コサイン型ウィンドウ
        'NONE':ウィンドウ無し

cwtfun.m

連続ウェーブレット変換を適用します。
  [WCOEF,WSCALE,FREQ]=CWTFUN(X,SCALE,DT)はサンプリング間隔
  DTの単数行信号Xの連続ウェーブレット変換を行い、ウェーブ
  レット係数WCOEFと、その1次元方向に対応するウェーブレット
  スケールWSCALE、周波数FREQを出力します。2次元方向は時間
  軸に対応します。入力のSCALEはWSCALE/DTに対応し、ウェーブ
  レットスケールの離散点数となります。マザーウェーブレット
  には複素ウェーブレットであるMorletウェーブレットを使用
  します。変換時に信号の端にはゼロを外挿しています。注意点
  として、Morletウェーブレット使用時にSCALEの値に2/f0未満
  を用いた場合にウェーブレットの平均がゼロから大きく離れる
  ことからWCOEFの絶対値が過大に評価されます。
 
  [WCOEF,WSCALE,FREQ,EA,PWW,FC,CG]=CWTFUN(X,SCALE,DT,NAME)
  はNAMEで指定されたマザーウェーブレットを用いて連続ウェー
  ブレット変換を行います。また、ウェーブレットスケールごと
  のエネルギーEA、ウェーブレットパワースペクトルPWWを返し
  ます。さらに通過大域中心周波数または特徴周波数FC、アドミ
  ッシブル定数CGを出力します。選択可能なマザーウェーブレッ
  トは以下の通りです。
 
        'MORLET':Morlet wavelet
        'MEXICAN':Mexican hat wavelet
 
  参考:新誠一・中野和司 監訳
    「図説 ウェーブレット変換ハンドブック」朝倉書店、2005. 

icwtfun.m

連続逆ウェーブレット変換を適用します。
  [XA,SCALE,DS]=ICWTFUN(WCOEF,WSCALE,DT)はサンプリング間隔
  DTの単数行信号から計算したウェーブレット係数WCOEFと、それ
  に対応するウェーブレットスケールWSCALEを用いて連続ウェーブ
  レット逆変換を実行します。なお出力のSCALEはWSCALE/DTに対応
  し、ウェーブレットスケールの離散点数となります。DSはSCALE
  の平均間隔(=MEAN(DIFF(SCALE)))を出力します。
  出力XAを用いることで、SCALEが等間隔の場合にはSUM(XA*DS,1)
  により逆変換が完了します。WSCALEが信号のエネルギーを全て
  含有するときにはこれは元信号の揺動成分にほぼ対応します。
  ここでマザーウェーブレットとしてはMorletウェーブレットを
  使用します。逆変換時に信号の端にはゼロを外挿しています。
 
  [XA,SCALE,DS]=ICWTFUN(WCOEF,WSCALE,DT,NAME)はNAMEで指定
  されたマザーウェーブレットを用いて連続ウェーブレット逆変
  換を行います。選択可能なマザーウェーブレットは以下の通り
  です。
 
        'MORLET':Morlet wavelet
        'MEXICAN':Mexican hat wavelet
 
  参考:新誠一・中野和司 監訳
    「図説 ウェーブレット変換ハンドブック」朝倉書店、2005. 


equation

このディレクトリは揺動の簡易的な操作、あるいはガウス関数、エルミート多項式を実行する関数ファイルを含みます。

fluctfun.m

複数列ベクトルから平均値を引いた揺動成分を出力します。(※関数名をfluctuationから変更)
  [Y]=FLUCTFUN(X)は入力Xから平均値を引いた揺動成分Y
  を出力します。Xが2次元以上の配列のとき、最も長い次元
  の方向に平均値を計算します。
  
  [Y]=FLUCTFUN(X,DIM)は次元DIMの方向に平均値を計算
  します。
 
  参考:NORMALIZE

normalize.m

複数列ベクトルから平均値を差し引き標準偏差で除算した無次元化信号を出力します。
  [Y]=NORMALIZE(X)は入力Xから平均値を引き標準偏差で無次
  元化した変数Yを出力します。Xが2次元以上の配列のとき、
  最も長い次元の方向に無次元化を行います。
  
  [Y]=NORMALIZE(X,DIM)は次元DIMの方向に無次元化を行います。
 
  参考:FLUCTFUN

fluctlevelfun.m

揺動レベルを求めます(定常性を仮定)。(※関数名をfluctlevelから変更)
  [Y]=FLUCTLEVELFUN(X)は入力Xの標準偏差を平均値で割り無次元
  化した揺動レベルYを出力します。Xが2次元以上の配列のとき、
  最も長い次元の方向に平均値と標準偏差を計算します。
  
  [Y]=FLUCTLEVELFUN(X,DIM)は次元DIMの方向に平均値を計算
  します。
 
  参考:SKEWFUN, FLATFUN

skewfun.m

歪度を求めます(定常性を仮定)。(※関数名をskewnessから変更)
  [Y]=SKEWFUN(X)は入力XのSkewnessを返します。Xが2次元
  以上の配列のとき、最も長い次元の方向に対して計算します。
  
  [Y]=SKEWFUN(X,DIM)は次元DIMの方向に計算します。
 
  参考:FLATFUN, FLUCTLEVELFUN

flatfun.m

偏平度を求めます(定常性を仮定)。(※関数名をflatnessから変更)
  [Y]=FLUCTFUN(X)は入力Xから平均値を引いた揺動成分Y
  を出力します。Xが2次元以上の配列のとき、最も長い次元
  の方向に平均値を計算します。
  
  [Y]=FLUCTFUN(X,DIM)は次元DIMの方向に平均値を計算
  します。
 
  参考:NORMALIZE

gaussian.m

ガウス関数を計算します。
  [Y]=GAUSSIAN(X)は座標Xにおけるガウス分布に従う変数Y
  を出力します。このとき平均値は0、標準偏差は1です。
  Xが複数列のとき、出力Yも同じ大きさの複数列となります。
  
  [Y]=GAUSSIAN(X,MU,SIGMA)は平均値MU、標準偏差SIGMAの
  ガウス分布に従う変数Yを出力します。
 
  [Y]=GAUSSIAN(X,MU,SIGMA,DIM)は複数列(行)ベクトルX
  の各列(行)に対してMUやSIGMAを設定し、かつ行数に比べ
  列数(列数に比べ行数)が多いときに用いてください。
  次元DIMは共通の平均値、標準偏差を用いる次元方向です。
 
  参考:GAUSSMULTI

gaussmulti.m

多変量ガウス関数を計算します。
  [Y]=GAUSSMULTI(X)は座標Xにおける平均値0、分散共分散
  行列が単位行列となる多変量正規(ガウス)分布Yを出力
  します。ここでX=[X1,...,Xi,...,Xn]のときXをn変数と
  して、出力Yはn次元の変数となります。なおXiは全て長さ
  の同じ列ベクトルとしてください。
 
  [Y]=GAUSSMULTI(X,MU,SIGMA)は平均値MU、分散共分散行列
  SIGMAの分布Yを返します。入力SIGMAの長さが1のとき、計
  算ではこれに単位行列を掛けて扱います。
 
  平均値MUまたは分散共分散行列SIMGAが空行列のとき、それ
  ぞれ0と単位行列を代入します。
 
  参考:GAUSSIAN

hermite.m

エルミート多項式を計算します。
  [Y]=HERMITE(X,N)はN次のエルミート多項式のX座標の変数Y
  を出力します。このときXは単数列(行)ベクトルでなくては
  なりません。
 
  [Y]=HERMITE(X,[N1,N2,...])はN1,N2,...次のエルミート
  多項式のX座標の変数Yを出力します。このときYは複数列(行)
  ベクトルとなります。
 
  [Y]=HERMITE(X,N,A)は重み関数の指数EXP(-AX^2)のAの値
  を設定します。Gram-Charier級数展開では重み関数が正規
  分布であるためA=1/2であり、デフォルトではこの値を用
  います。ロドリゲスの公式に従うエルミート多項式の計算
  はA=1により実行できます。

poisson.m

ポワソン分布を計算します。
  [PY,PX]=POISSON(XMAX,LAMBDA)は離散点PX=1:XMAXに対し
  平均LAMBDA、分散LAMBDAとなるポワソン分布PYを返します。

fbm.m

非整数ブラウン運動の一次元関数列を作成します。
  [BH]=FBM(H,LEN,M)はハースト指数H、長さLENの非整数ブラウン
  運動の記録BHを単数列ベクトルで出力します。この計算では
  相関の持続する長さMを指定する必要があります。単位長さを
  8分割して計算することで近似の精度を高めています。また
  BH(1)=0とします。
  
  [BH]=FBM(H,LEN,M,N)は単位長さの分割数Nを指定します。
 
  [BH,DBH]=FBM(H,LEN,M)は記憶BHの微小変動DBHを出力します。
  
  参考:J・フェダー著、松下貢・早川美徳・佐藤信一訳
       「フラクタル」啓学出版、1991、P183. 


process

このディレクトリは揺動の簡易的な操作、あるいはガウス関数、エルミート多項式を実行する関数ファイルを含みます。

proc.m

時系列データから多項式フィッティングした値を引きます。
  [Y]=PROC(X,NMAX,TYPE)は単数列ベクトルXをNMAX点数ずつ
  に分割して群集合を作成し、各集合をTYPEで指定した方法
  で加工します。その後各集合ごとに標準偏差で無次元化を
  行い、結合した時系列を出力します。なおNMAX点で割り切
  れなかった余りの集合は外挿されます。
  
  [Y]=PROC(X,NMAX,TYPE,NORMALIZE)はNORMALIZEにより無次
  元化の実行有無を指定します。NORMALIZE='ON'のとき無次
  元化を実行し'OFF'のとき無次元化を行なっていない時系列
  を返します。
 
  加工方法は以下のとおりです。
  
    0,'MEAN';平均値の差分を出力
    1,'LINEAR:最小二乗法による線形フィッティングの差分を出力
    2,3,4,5,6,7,8,9:各次数のフィッティングの差分を出力
    他:未実装

fftfil.m

高速フーリエ変換を用いてフィルタリングを行います。
  [Y]=FFTFIL(X,NMAX,DT,RANGE)は単数列ベクトルXをNMAX点数
  ずつに分割して群集合を作成し、各集合をFFTによりフィルタ
  リングします。なお、NMAX点で割り切れなかった余りの集合
  は外挿されます。このとき離散点の時間間隔DTの単位の逆次
  元が周波数範囲RANGEの次元となります。
  
  [Y]=FFTFIL(X,NMAX,[],RANGE)は時間間隔DTに1を代入します。
  
  この関数のアルゴリズムとして、分割された時系列をFFT関数
  を用いて周波数成分を計算し、RANGEが全て{正またはゼロ}の
  ときRENGEで指定された成分の逆変換を出力します。ここで
  RANGE=[S1,E1;S2,E2;...]は閉区間集合[[S1,E1],[S2,E2],...]
  の和となります。
  
  RANGEが全て{負またはゼロ}のときRANGEで指定された周波数
  成分を除いた時系列データが出力されます。
  
  RANGEが全て{ゼロ}のとき入力変数Xをそのまま返します。

fftfil2.m

高速フーリエ変換を用いたフィルタリング(接続点平滑化)。
  [Y]=FFTFIL2(X,NMAX,DT,RANGE)は単数列ベクトルXをNMAX点数
  ずつに分割して群集合を作成し、各集合をFFTによりフィルタ
  リングします。関数FFTFILと異なる点として、郡集合ごとの
  接続点周りのNMAX/2点に対し、NMAX/2点ずらして求められた
  フィルタ済み波形を上書きします。また、NMAX点で割り切れ
  ない場合、外側にゼロ行列を外挿してFFTを実行します。その
  他の注意事項はFFTFILを参照してください。
  
  参考:FFTFIL

fftshp.m

高速フーリエ変換を用いてフィルタリングを行います(平滑成形)。
  [Y]=FFTSHP(X,NMAX,DT,FIT_RANGE,SHP_RANGE)は単数列ベクト
  ルXをNMAX点数ずつに分割して群集合を作成し、各集合をFFT
  によりフィルタリングします。なお、NMAX点で割り切れなかっ
  た余りの集合は外挿されます。このとき離散点の時間間隔DTの
  単位の逆次元が周波数範囲RANGEの次元となります。
  
  [Y]=FFTSHP(X,NMAX,[],RANGE)は時間間隔DTに1を代入します。
  
  この関数のアルゴリズムとして、分割された時系列をFFT関数
  を用いて周波数成分を計算し、閉区間FIT_RANGE=[S1,E1]でパワ
  ースペクトルをべき乗フィッティングします。その後、閉区間
  SHP_RANGE=[S2,E2]内の周波数成分の振幅を、パワースペクトル
  が先程フィッティングしたべき乗に乗るように調整します。
 
  参考:FFTFIL

interpsq.m

矩形波による補間(周波数指定)。
  [YI,YIF]=INTERPSQ(X,Y,XI,FREQ)は、配列Xの点で配列Yの値を
  とる信号に乗っている周波数FREQ=[FREQ1,FREQ2,...]の各矩形
  波の振幅、初期位相を求め、各矩形波が配列XIの点でとる値の
  和YIおよび各周波数成分YIFを返します。XIが空行列のとき、
  XIにはXが代入されます。このプログラムは実験回路のインダ
  クタンスに起因する矩形波を除去する際に有効です。


general

このディレクトリは他の関数で共通に利用される汎用性の高い関数を含みます。

ensemble.m

一次元データを分割し、指定関数に適用した出力結果を平均して返します。
  [OUT1,...]=ENSEMBLE(FH,NMAX,X,CONST1,...)は複数列ベクトル
  XをNMAX点数ずつに分割して群集合を作成し、各集合を関数ハン
  ドルFH=@function_nameの関数の計算に用います。この際、関数
  FHの計算に必要な定数はCONST1,...を用います。
  各集合の計算出力値はアンサンブル平均の後OUT1,...に出力され
  ます。

ensemble2.m

一次元データを分割し、指定関数に適用した出力結果を平均して返します。
  [OUT1,...]=ENSEMBLE2(FH,NMAX,X,CONST1,...)は複数列ベクトル
  XをNMAX点数ずつに分割して群集合を作成し、各集合を関数ハン
  ドルFH=@function_nameの関数の計算に用います。ここで各集合は
  NMAX/2点ずつずらして切り出して作られ、点数を有効に使用でき
  ます。また、関数FHの計算に必要な定数はCONST1,...を用います。
  各集合の計算出力値はアンサンブル平均の後OUT1,...に出力され
  ます。
 
  参考:ENSEMBLE

multiin.m

指定関数への多次元データ入力を実現します。
  [OUT1,...]=MULTIIN(DIMIN,DIMOUT,FH,CONST1,...)は次元DIMIN
  方向へ連結された複数列ベクトルCONST1,...を関数ハンドルFH
  の引数として計算し、出力OUT1,...を次元DIMOUT方向へ連結して
  返します。CONST1,...の連結をしない場合には0を代入できます。
  たとえばC1,C2,C3,C4を入力し、C3のみ2次元方向に連結している
  場合には、DIMIN=[0,0,2,0]としてください。
 
  参考:SLICEGET

dif.m

高速フーリエ変換を利用して一次元データの微分を計算します。
  [FD]=DIF(Y,N)は等間隔の単数列ベクトルYのN階微分値FD
  を出力します。このとき離散点間隔DTは1に設定されます。
  微分計算には高速フーリエ変換を利用することから、入力
  Xの長さは2のべき乗とすることが推奨されます。
  
  [FD]=DIF(Y,N,DT)は離散点間隔にDTを用います。
 
  この関数では、両端の出力振幅値が真値より大きくなります。
  これは滑らかな正弦・余弦波により両端の直角形状を形成
  する際に必要な高周波の成分が大きく現れるためです。
  計算に用いる場合は出力値中央を使用してください。

overth.m

閾値周りの行番号を検出します。
  [LINPEAK]=OVERTH(X,TH)は単数列ベクトルXが閾値TH以上となる
  連続した行の中で、Xが最大となる行番号LINPEAKを出力します。
  もし連続行の中でXが複数回同一の最大値を持つ場合、LINPEAKは
  最初に最大値となった行番号を返します。
  
  [LINPEAK]=OVERTH(X,TH,DIRECTION)は、DIRECTION=1のとき入力
  Xが閾値TH以上、DIRECTION=-1のとき閾値TH以下となる行の中で、
  Xが最大/最小となる行番号LINPEAKを出力します。
 
  [LINPEAK,LINUP,LINDOWN,LINMIDDLE]=OVERTH(X,TH,DIRECTION)は
  閾値以上/以下となる行番号LINUPと、その後閾値を下回る/上回る
  行番号LINDOWN、またそれらの中間の行番号LINMIDDLEを返します。
 
  参考:CONDFUN, WDFUN

moment.m

任意の次数の移動中心モーメントを計算します。
  [MOMENT]=MOMENT(Y,CONST,[N1,N2,...])は単数列ベクトルYの
  [N1,N2,...]次のモーメントの移動平均の結合列ベクトルを
  出力します。CONST点の移動平均により出力変数は入力変数の
  長さからCONST-1点だけ短くなります。
  
  [M1,M2,...]=MOMENT(Y,CONST,[N1,N2,...]は各次数のモーメントの
  移動平均を[M1,M2,...]に分割して出力します。
  
  [MOMENT_Y,MOVEAVE_X]=MOMENT(Y,X,CONST,[N1,N2,...])では
  単数列ベクトルXの移動平均MOVEAVE_Xも同時に出力します。
  
  [M1_Y,M2_Y,...,MOVEAVE_X]=MOMENT(Y,X,CONST,[N1,N2,...])も
  同様に動作します。
  
  N次のモーメントはE[(x-\mu)^N]で定義されます。E[]はアンサンブル
  平均です。この関数では方程式を展開して演算を行うことで
  高速化を実現しています。
  
  PDF型の定量化によく用いられる歪度(SKEWNESS:S)、偏平度(FLATNESS:F)の
  移動平均は2-4次のモーメントにより、S=M3./M2.^1.5,F=M4./M2.^2から
  容易に求めることが可能です。

moment2.m

MOMENT関数出力結果にNaNを外挿することで入出力データ長を揃えます。
  [MOMENT]=MOMENT2(Y,CONST,[N1,N2,...])は単数列ベクトルYの
  [N1,N2,...]次のモーメントの移動平均の結合列ベクトルを
  出力します。出力の両端にはNaNを外挿します。詳細な説明は
  MOMENTを参照してください。
 
  参考:MOMENT


fitting

このディレクトリはフィッティングに関連する関数を含みます。

gnfit.m

非線形最小二乗法を用いてフィッティングを行います。
  [P,FY]=GNFIT(X,Y,FUN,S)は単数列ベクトルX、Yを関数
  名FUN、初期パラメータSの関数でフィッティングを行い、
  フィッティング後のパラメータPと変数FYを返します。
  ここで利用可能な関数は解析的に微分可能なものに限ら
  れ、FUNCPACK.Mに登録されたもののみとなります。収束
  条件はABS(P)が10^-5未満、収束の重みは1e-2です。
  
  [P,FY,DP]=GNFIT(X,Y,FUN,S)によりパラメータの最終
  変化値DPを出力できます。
 
  [P,FY]=GNFIT(X,Y,FUN,S,ERR,W)により収束条件ERRと
  収束の重みWを設定できます。
 
  [P,FY]=GNFIT(X,Y,FUN,S,[],[],DEMO)により収束の様子
  を確認することができます。DEMO=1のとき収束後の図が、
  DEMO=2のとき収束経過が表示されます。
 
 参考:FITTING, FUNCPACK

funcpack.m

gnfit.mで利用するための計算式を提供します。
  [Y]=FUNCPACK(X,PA,0,FUN)は単数ベクトルX、パラメータPAを
  関数FUNに代入した値Yを返します。
 
  [DY]=FUNCPACK(X,S,D,FUN)は関数FUNをS(D)の変数で偏微分した
  値DYを返します。
 
  非線形最小二乗法によるフィッティングを行うGNFIT関数を用い
  るときは、この関数内でフィッティングしたい関数が定義されて
  いるかどうか確認してください。
 
  現在登録されている関数は以下の通りです。この他にも、解析
  的に偏微分可能な関数であればユーザにより適宜追加が可能です。
 
        'GAUSS':ガウス分布(引数4)
        'GAUSS+LINEAR':ガウス+線形(引数5)
        'LORENTZ':ローレンツ関数(引数4)
        'EXP':指数関数(引数3)
        'EXP0':定数0の指数関数(引数2)
        'BEKI':べき関数(引数2)
        'BN':Barndorff-NielsenのPDF一般型(引数7)
 
 参考:GNFIT, FITTING

fitting.m

初期パラメータを概算してフィッティングを行います。 (この関数は修正途中です。)
  [P,FY]=FITTING(X,Y,RX,RY,FUN)は単数列ベクトルX、Yを
  RX(1)<=X<=RX(2)かつRY(1)<=Y<=RY(2)の範囲内で関数FUN
  によりフィッティング後のパラメータP、ベクトルFYを
  出力します。フィッティングに必要な初期パラメータは
  概算されます。RX、またはRYは空行列のときX,またはYの
  全範囲をフィッティングの対象とします。
 
  [P,FY,DP]=FITTING(X,Y,RX,RY,FUN)はパラメータの最終
  変化値DPを出力します。
 
  [R,FY]=FITTING(X,Y,RX,RY,FUN,S)では初期パラメータS
  を設定できます。
 
  [R,FY]=FITTING(X,Y,RX,RY,FUN,S,DEMO)により収束の様子
  を確認することができます。DEMO=1のとき収束後の図が、
  DEMO=2のとき収束経過が表示されます。
 
  フィッティングには関数GNFITを用います。
 
 参考:GNFIT, FUNCPACK


convenient

このディレクトリは解析時に便利な関数を含みます。

surf2.m

SURF関数を利用した2次元プロットを行います。
  SURF2(X,Y,Z,C)はSURF(X,Y,Z,C)を実行し、その後視点を
  2次元の視点へ移すことで2次元サーフェスプロットを実現
  します。またシェーディングを補間、ライティングをphong
  に設定します。さらに軸のスケーリングを変更します。
 
  参考:SURF

signdigit.m

指定した有効桁で変数を丸めます。
  [Y]=SIGNDIGIT(X,N)は有効桁数をNとして変数Xを丸めます。
 
  参考:ROUND

sec2hms.m

秒から時分秒への変換。
  HMS=SEC2HMS(SEC)は、単数列の秒数信号SECを、時・分・秒を
  横方向に連結した2次元配列HMSに変換して返します。

polarget.m

円弧上の信号と極座標位置を抽出します。
  [IMR,THETA,RHO]=POLARGET(IM,CENTER,DR)は3次元行列IM
  の1,2次元面内で中心座標CENTER、半径DRとなる円弧上に
  位置する点での値IMRを抽出します。また対応する点の角度
  THETA(ラジアン)および半径RHOを出力します。円弧上で抽
  出する点数はROUND(DR*12)ですが、1ピクセルに二つ以上の
  点が重なった場合、その数だけ減少します。
 
  [IMR,THETA,RHO]=POLARGET(IM,CENTER,DR,NUM)は円弧上で
  等間隔にNUM点抽出します。

detectline.m

行番号の検索を行います。
  [LINE]=DETECTLINE(FNM,NAME,param,value,...)は、ファイ
  ルFNMの1列目を検索し、セル配列NAMEの記述された行番号
  LINEを出力します。区切り子の指定などは下記に従い設定
  してください。
 
  設定可能なオプションのパラメータ名/値
        'delimiter'     - 区切り子
        'bufsize'       - バイト単位で表した最大文字列の長さ

sliceget.m

配列を指定次元でスライスして切り出します。(※generalディレクトリから移動)
  [SLI]=SLICEGET(MATIN,DIM,LAYER)は多次元行列MATINから
  次元DIMの行番号LAYERに対応する行列をSLIに切り出します。

combo.m

複数の1次元配列組み合わせの2次元方向連結。
  OUT=COMBO(X1,X2,...)は、1次元配列入力X1,X2,...の要素を持つ
  全ての組み合わせをNDGRID関数により抽出し、2次元配列OUTとし
  て出力します。 
  
  例えば、OUT=COMBO(X1,X2)は以下で計算されたOUTと一致します。
  >     out=zeros(length(x1)*length(x2),2); lin=1;
  >     for jj=1:length(x2)
  >         for ii=1:length(x1)
  >             out(lin,:)=[x1(ii),x2(jj)];
  >             lin=lin+1;
  >         end
  >     end
 
  参考:NDGRID, CELLOUT

cellout.m

任意関数出力を一つのセル配列にまとめて出力。
  C=CELLOUT(FH,NOUT,...)は、関数ハンドルFHにNOUTより後ろの全
  ての変数を入力し、NOUTの数だけ出力変数を取り出して一つのセ
  ル配列Cにまとめます。

close2.m

CLOSE関数を利用してより容易にフィギュアを削除します。
  CLOSE2(H)は、ハンドル番号がHであるウィンドウを削除しま
  す。CLOSE(H)との違いは、ハンドル番号Hのウィンドウが無い
  場合にもエラーメッセージを表示しません。
 
  参考:CLOSE

subaxes.m

複数のAXESを作成(間隔指定)。
  H=SUBAXES(L,M,N,W_EXT,W_IN)は、L行M列の小さいAXESのうちN番目の
  AXESを作成し、ハンドル番号Hを返します。このとき、AXESと外枠の
  間隔W_EXTと各AXES間隔W_INを指定できます(範囲:0〜1)。
 
  参考:AXES, SUBPLOT 

moveobj.m

AXES内オブジェクトの移動。
  MOVEOBJ(H,DXYZ)は、ハンドル番号HのAXES内オブジェクトを各座標
  軸の方向にDXYZ=[DX,DY]または[DX,DY,DZ]だけずらします。Hには
  オブジェクトのハンドル番号を直接入力することもできます。
 
  参考:GET, SET, FINDOBJ

seply.m

複数次元配列を分割し任意関数に適用します。
  [OUT1,...]=SEPLY(FH,DIM,X,CONST1,...)は行列Xを次元
  DIM方向に分割し、関数ハンドルFH=@function_nameの関
  数の計算に用います。このとき、関数FHの計算に必要な
  定数はCONST1,...を用います。分割したXごとに単数の
  出力OUT1,...を出力します。
  
  [OUT1,...]=SEPLY([],DIM,X)はXをDIM方向に分割して
  OUT1,...に返します。
 
  参考:SLICEGET

polar3.m

円筒座標入力によるプロット。
  POLAR3(THETA,RHO,Z)は、円筒座標(方位角THETA,半径RHO,
  高さZ)の入力に対してデカルト座標(X,Y,Z)を計算し、
  PLOT3(X,Y,Z)を実行します。
 
  POLAR3(THETA,RHO,Z,S)は、文字列Sはで指定したラインスタ
  イルを使います。有効なラインスタイルの詳細については、
  PLOTを参照してください。
 
  参考:POLAR, PLOT3, PLOT

sqinput.m

グラフィック関数への多次元変数入力。
  SQINPUT(FH,DIM,XYZUVW,...) は関数ハンドルFHのグラフィック関数
  に対し、次元DIM方向に分割したXYZUVWとそれ以降を入力します。
 
  例えばDATA=CAT(3,[X1,Y2],[X2,Y2])のような3次元データをPLOT関
  数により描画するとき、
        PLOT(SQUEEZE(DATA(:,1,:)),SQUEEZE(DATA(:,2,:)));
  と書かなければならないコマンドを
        SQINPUT(@PLOT,2,DATA);
  により代用できます。
  
  参考:SLICEGET

drsearch.m

指定されたディレクトリを持つドライブの検索。
  [DRIVE]=DRSEARCH(DIRECTORY)はディレクトリ名DIRECTORYを
  直下の階層に持つドライブ名DRIVEの英字(半角)を文字列で
  返します。検索範囲はA〜Zドライブです。2つ以上のドライブ
  がある場合には、英字を連結します(例:DRIVE='CH')。なお
  DIRECTORYは大文字・小文字を区別しません。
 
  [DRIVE,TYPE]=DRSEARCH(DIRECTORY)はDIRECTORYがディレクトリ
  以外の場合にも検索を行い、種類をTYPEで返します。ここで
  TYPEとして返される値の詳細は関数EXISTを参照してください。
  すなわち、この関数はファイルの検索にも利用できます。
 
  参考:EXIST

call_times.m

呼び出し回数の記憶と出力。
  NUM=CALL_TIMES(S)は、文字列・数値配列あるいは関数ハンドルS
  を入力とした「CALL_TIMES(S)」のコマンドが、過去に実行された
  回数NUMを返します。NUMのカウントはCLEAR ALL/FUNCTIONS/CALL_TIMES
  コマンドにより0に初期化されます。MATLAB終了時もカウントは
  初期化されます。Sが未入力の場合、空行列が代入されます。
 
  NUM=CALL_TIMES(S,LOCK)はLOCK==1のとき、CLEAR関数によるカウ
  ントの初期化を防ぎます。LOCK==0により、再度初期化を可能に
  します。
 
  参考:PERSISTENT, MLOCK, MUNLOCK, CLEAR, ISA

linspace2.m

線形に等間隔な座標の作成。
  XYZM=LINSPACE2(XYZ1,XYZ2,N)は、2つの座標XYZ1とXYZ2の間でN点の
  等間隔座標XYZMを出力します。
 
  [XYZM,DX,DXA]=LINSPACE2(XYZ1,XYZ2,N)は、XYZMの間隔のベクトルDX
  およびDXのノルムDXAを出力します。
 
  参考:LINSPACE2 

dlmread2.m

DLMREAD関数出力の非ゼロ列の抽出。
  RESULT=DLMREAD2(VARARGIN)は任意入力VARARGINに対し
  DLMREAD(VARARGIN)を実行し、その出力の中で全行ゼロの
  列を除いた配列RESULTを出力します。
 
  参考:DLMREAD

displace_text.m

テキスト中の文字列の置換。
  DISPLACE_TEXT(SOURCE,DESTINATION,S1,S2,SD,NUM)は、ファイル
  SOURCEを新しいファイルDESTINATIONにコピーするとともに、文
  字列S1,S2に挟まれた範囲を文字列SDに置換します。ここで、S1は
  NUM個目に現れたものを用います。複数の文字列を同時に置換させ
  たい場合は、S1,S2,SDにセル配列を用いて下さい。
  
  DISPLACE_TEXT(SOURCE,[],S1,S2,SD,NUM)のとき、ファイルSOURCE
  内の文字列を置換します。SOURCEとして、フルパスでの指定を推奨
  します。
 
  参考:FSCANF, FPRINTF


data

このディレクトリは直線型ダイバータ模擬試験装置NAGDIS-IIで計測された揺動信号のサンプルデータを含みます。各ファイルは1行目から順に時間Time, イオン飽和電流Isat, 電子密度ne, 電子温度Teをカンマ区切りで保存しています。

0mm_sample.txt

半径r=0mmで計測された揺動信号。

20mm_sample.txt

半径r=20mmで計測された揺動信号。


startup.m

MATLABを使用する場合、この関数ファイルはホームディレクトリ(起動時のカレントディレクトリ)に設置された場合に自動実行されます。これはMATLABの機能です。また、Octave(Windows版)を利用する場合には導入方法を参照してください。
この関数はnagoya-uディレクトリとそのサブディレクトリ全てにサーチパスを設定し、かつMATLABでのグラフィックスプロパティのデフォルト値を一時的に変更します。プロパティの設定値が適切でないときは該当箇所を修正もしくは削除してください。
function_120111以降の変更として、Octave/FreeMatでのエラー対策のための関数をvsfreeディレクトリに梱包しました。使用ソフトがMATLAB以外のとき、vsfreeディレクトリをサーチパスに追加します。
  この関数はMATLAB/Octave起動時に自動で実行されることを
  想定しています。
 
  作成済みの関数が格納されているディレクトリをサーチパス
  に設定し、MATLABのグラフィックスプロパティを定義します。


tips_sample.m

複数の解析関数の使い方をまとめたチップス集。
  このプログラムは、サンプルデータの読み込みからその先、
  各種解析手法の適用例をまとめています。データ読み込み
  箇所や変数など、用途に合わせて変更することができます。


main_sample.m

サンプルデータに各種解析手法を適用します(旧)。
  ※本プログラムよりもtips_sample.m内の関数利用法を参考
  にすることを推奨します。
 
  このプログラムを使って、サンプルデータに対して各種解析
  手法を適用し、その結果を図示できます。適用可能な解析手 
  法FUNは以下の通りです。
  
        'PDF':確率密度関数
        'JPDF':結合確率密度関数
        'FFT':パワースペクトル
        'COR':相関係数
        'CA':条件付き平均
        'WD':待ち時間・持続時間分布
 
  また、プログラム中の各関数の説明は[help 関数名]により
  コマンドウィンドウ上に表示されます。[which 関数名]では
  関数の保存されているディレクトリが表示されます。