■ Matlabなどのソフトウェアツールでインパルス応答を読込む


ここではMatlabなどのソフトウェアツールで測定したインパルス応答ファイルを読込む方法について説明します。

IMS ver.4.0ではユニコード対応に変更されましたので、Matlabでの読込みは簡単になります。

以下に具体的なMatlabコードを示します。
具体的なipfファイルフォーマットについてはマニュアルを参照してください。

※なお、動作はMatlab 2015aで確認しています。

■ m-File例

% m File for Coretex Ipf format data
% MATLABでコアテックスIpfフォーマットデータを読み込む
%
% Date : 2015.04.16
% Ver. : 1.0
%

% 読み込むファイルはDドライブのDataフォルダにあるtest_ch1.ipfとする
% ファイルをオープン
FileID = fopen('d:\Data\test_ch1.ipf');

% ヘッダ部1を読み込む
Header1 = fread(FileID, [1, 8], 'uint32');

%データ最大値をfloat(32bit)精度で読み込む
fMaxVal = fread(FileID, [1,1], 'single');

%ヘッダー部2を読み込む
Header2 = fread(FileID, [1,5], 'uint32');

%インパルス応答データ長をPointへコピー
Point=Header1(1,2);

%コメント1,2,3を読み込むが、Ims Ver.4以前は2byte文字であるため
%所定のバイト数だけ読み飛ばす
if Header2(3) == 400        % Ims Ver.4.0なら
  Comment1=fread(FileID, [1,20], 'char');
  Comment2=fread(FileID, [1,20], 'char');
  Comment3=fread(FileID, [1,20], 'char');
else                % それ以前のバージョンなら
  Comment1=fread(FileID, [1,20], 'uint8');
  Comment2=fread(FileID, [1,20], 'uint8');
  Comment3=fread(FileID, [1,20], 'uint8');
end

%データ部を先頭からPoint点だけ読み込む
Data = fread(FileID,[1, Point], 'single');

%ファイルをクローズする
fclose(FileID );