Programming with MATLAB | ![]() ![]() |
構造体の操作のために関数を作成
特定のフィールド構造をもつ構造体に対して動作する関数を作成することができます。このような関数は、構造体のフィールドや要素にアクセスできます。
注意 構造体に動作する M-ファイル関数を作成するとき、ユーザ自身でエラーチェックを行わなければなりません。すなわち、コードは、予想されるフィールドに対してチェックすることを保証しなければなりません。 |
例として、水源での様々な毒素のレベルを時間毎に測定した記録データの集合を考えます。データは、15の観測点からなり、各観測点は、3つの測定値をもちます。
このデータを15個の構造体からなる配列に構造化することができます。各構造体は、3つのフィールドをもち、各フィールドは得られた3つの測定値に対するものです。
関数concen
は、特定の特徴をもつ構造体の配列に下記のように操作します。その引数は、フィールドlead
,
mercury
, chromium
を含まなければなりません。
function [r1,r2] = concen(toxtest); % 2要素ベクトルで、r1は、各観測点でのmercury とlead の比、 % r2は、lead と chronium の比です。 r1 = [toxtest.mercury]./[toxtest.lead]; r2 = [toxtest.lead]./[toxtest.chromium]; % 同一プロット上に、種々の色を使って、 % kead, mercury ,chromiuの濃度のプロット lead = [toxtest.lead]; mercury = [toxtest.mercury]; chromium = [toxtest.chromium]; plot(lead,'r'); hold on plot(mercury,'b') plot(chromium,'y'); hold off
test
のようなサンプル構造体配列を使って、この関数を試してください。
test(1).lead = .007; test(2).lead = .031; test(3).lead = .019; test(1).mercury = .0021; test(2).mercury = .0009; test(3).mercury = .0013; test(1).chromium = .025; test(2).chromium = .017; test(3).chromium = .10;
![]() |
関数と演算子の適用 | 構造体配列内のデータの構造化 | ![]() |