Compose-3020:OMLでのCAEデータの読み取り
Tutorial Level: Advanced
このチュートリアルでは、以下の操作方法について説明します:
- readvectorbuilderを使用してCAEファイルの階層を確認する。
- readvectorを使用してCAEデータを読み取る。
- readmultvectorsを使用してCAEデータを読み取る。
readvectorbuilderを使用した階層の確認
readvectorbuilderは、ComposeでサポートされているCAEの結果やデータファイルを読み取るユーティリティツールです。適切なreadvector()コマンドとreadmultvectors()コマンドを作成するうえで効果的です。このツールを実行するとreadvectorユーティリティダイアログが開きます。このダイアログを使用して、結果ファイルを選択し、そこに収められているサブケース、タイムステップ、タイプ、要求、コンポーネントに移動できます。目的の選択を指定して印刷を選択すると、(readvectorコマンドまたはreadmultvectorsコマンドを使用した)該当のOMLコマンドが表示されます。
-
すべてのタイムステップにわたる値の読取り
-
選択したタイムステップでの複数の要求とコンポーネントの読み取ります。
readvectorを使用したCAEデータの読み取り
この2番目の演習では、移動平均フィルターを設計し、CAEファイルから読み取ったデータをフィルター処理します。
-
元のデータをプロットします。
-
簡単な移動平均フィルターを設計します。
次のようにComposeでfilterコマンドを使用して簡単な移動平均フィルターを実装できます。
% moving average filter b = 0.2*ones(1,5); a = 1; output = filter(b,a,input);
-
元のデータとフィルター処理したデータを比較します。
次のスクリプトを使用して、ANGACCファイルから抽出した元のデータとフィルター処理したデータをプロットし、両者の差異を確認します。
y = readvector('ANGACC',2,1,1); plot(y,'g--'); % moving average filter b = 0.2*ones(1,5); a = 1; y2 = filter(b,a,y); hold on; plot(y2,'r:'); legend('Original data','Filtered data'); title('readvector Demo'); xlabel('Time(ms)'); ylabel('Angular Acceleration(rad/s2)');
このプロットは次のようになります。
readmultvectorsを使用したCAEデータの読み取り
連続する複数の要求とコンポーネントにわたり、特定タイプのデータのベクトルを特定のタイムステップで読み取ることが必要になる場合があります。この処理はreadmultvectors関数で実現できます。この例では、CAEファイル全体を読み取り、そのデータを抽出します。readmultvectorsにファイルを渡すと、ファイルにあるすべての情報を収めたセルが次の書式で返されます:
- 1番目の列にはタイプが記述されます。
- 2番目の列には要求が記述されます。
- 3番目の列にはコンポーネントが記述されます。
- 4番目の列には、上記の3つの列に対応する情報で指定されたデータベクトルが記述されます。
- 各行には、さまざまなデータセットが記述されます。以降は抽出関数を使用して、目的のデータを抽出できます。
以下に例を示します。
function y = SMA(x)
b = 0.2*ones(1,5);
a = 1;
y = filter(b,a,x);
end
filePath = '<installation_dir>\tutorials\ANGACC';
y = readmultvectors(filePath);
% extract interested data then do the moving average filtering
y_LT1 = SMA(extract(y,'Angular Acceleration','50th% Hybrid3 -
LOWER TORSO','Res. ang. acc.'));
y_LT2 = SMA(extract(y,'Angular Acceleration','50th% Hybrid3 -
LOWER TORSO','X-comp. ang. acc.'));
y_LT3 = SMA(extract(y,'Angular Acceleration','50th% Hybrid3 -
LOWER TORSO','Y-comp. ang. acc.'));
y_LT4 = SMA(extract(y,'Angular Acceleration','50th% Hybrid3 -
LOWER TORSO','Z-comp. ang. acc.'));
x = extract(y,'Time','Time','Time');
% do the plot
plot(x,y_LT1,x,y_LT2,x,y_LT3,x,y_LT4);
xlabel('Time(ms)');
ylabel('Angular Acceleration(rad/s2)');
title('50th% Hybrid3 - LOWER TORSO');
legend('Res. ang. acc.','X-comp. ang. acc.','Y-comp. ang.
acc.','Z-comp. ang. acc.');
このスクリプトによって次のプロットが得られます。

<installation_dir>/tutorial/readvector_demo.omlにあるOMLスクリプトには、このファイルから複数のデータを抽出する例があります。
そのスクリプトを実行すると、次の各プロットが得られます。
