カスタム設定の作成
MATLAB® でカスタム設定を作成することで、複数のセッションを通してプログラムにより自分のデータを保存し、それにアクセスできます。たとえば、設定を作成してシステムにある重要なフォルダーの場所を保存したり、あるファイルの実行回数を記録したりできます。
設定グループの追加と削除
設定は、グループに整理することができます。たとえば、matlab.editor
設定グループには、MATLAB エディターに関連する設定が含まれています。設定グループはツリー状に整理され、最上部にはルート ノードがあります。
グループの追加
新たな設定グループを追加するには、addGroup
関数を使用します。たとえば、ルート ノードの下に設定グループ mysettings
を作成します。
s = settings;
addGroup(s,"mysettings");
s
s = SettingsGroup with properties: matlab: [1×1 SettingsGroup] mysettings: [1×1 SettingsGroup] mldrivetripwireaccess: [1×1 SettingsGroup]
非表示のグループ
非表示の設定グループは設定階層に表示されませんが、プログラムによってアクセスできます。非表示のグループを作成するには、名前と値の引数 Hidden
を true
に指定します。たとえば、mysettings
の下に設定グループ myhiddensettings
を作成します。myhiddensettings
が mysettings
内に表示されないことに注意してください。
addGroup(s.mysettings,"myhiddensettings",Hidden=true);
s.mysettings
ans = SettingsGroup 'mysettings' with no properties.
グループの削除
設定グループを削除するには、関数 removeGroup
を使用します。たとえば、myhiddensettings
を削除します。
removeGroup(s.mysettings,"myhiddensettings");
設定の追加と削除
設定の追加
新たな設定を追加するには、関数 addSetting
を使用します。たとえば、設定 MyWorkAddress
を mysettings
設定グループに追加します。
addSetting(s.mysettings,"MyWorkAddress");
設定値を現在のセッションで設定するには、一時的な値を指定します。設定値を複数のセッションにわたって設定するには、個人用の値を指定します。たとえば、MyWorkAddress
に個人用の値を指定します。
s.mysettings.MyWorkAddress.PersonalValue = "3 Apple Hill Drive";
すると、プログラムにより設定値をコードで使用することができます。
fprintf("I work at %s.\n", s.mysettings.MyWorkAddress.ActiveValue)
I work at 3 Apple Hill Drive.
メモ
設定をルート設定グループに直接追加することはサポートされていません。
非表示の設定と読み取り専用の設定
非表示の設定は設定階層に表示されませんが、プログラムによってアクセスできます。非表示の設定を追加するには、名前と値の引数 Hidden
を true
に指定します。たとえは、非表示の設定 MyHiddenWorkAddress
をmysettings
設定グループに追加して、その個人用の値を設定します。
addSetting(s.mysettings,"MyHiddenWorkAddress",Hidden=true, ... PersonalValue="1 Lakeside Campus Drive");
読み取り専用の設定を追加するには、名前と値の引数 ReadOnly
を使用して、個人用の値を指定します。たとえば、読み取り専用の設定 MyBirthDate
を mysettings
設定グループに追加し、個人用の値を指定します。
mydate = datetime("6/1/1990",InputFormat="MM/dd/uuuu"); addSetting(s.mysettings,"MyBirthDate",ReadOnly=true,PersonalValue=mydate);
設定の削除
設定を削除するには、removeSetting
関数を使用します。たとえば、MyBirthDate
設定を削除します。
removeSetting(s.mysettings,"MyBirthDate");
関数を使用した設定の検証
設定またはグループに検証関数を指定することにより、設定値に特定の制約を課することができます。検証関数は、設定値候補を引数として受け入れ、その値が特定の要件を満たさない場合はエラーをスローします。
MATLAB では、設定の検証に使用できる検証関数をいくつか定義しています。
名前 | 意味 | 入力で呼び出される関数 |
---|---|---|
| ||
| ||
| ||
| ||
| ||
| ||
|
| |
|
| |
| ||
| ||
| ||
| ||
| ||
| ||
| ||
|
| |
|
設定を作成する際に検証関数を指定するには、名前と値の引数 ValidationFcn
を使用して、関数ハンドルを指定します。たとえば、設定 MyLogicalSetting
を mysettings
設定グループに追加し、その値が logical スカラーでなければならないと指定します。
addSetting(s.mysettings,"MyLogicalSetting",ValidationFcn=@matlab.settings.mustBeLogicalScalar);
MyLogicalSetting
の値を logical 値以外に設定するよう試みます。予想どおり、MATLAB はエラーをスローします。
s.mysettings.MyLogicalSetting.PersonalValue = 10;
Error setting 'MyLogicalSetting' in group 'mysettings': Value must be logical or convertible to logical.
設定グループ全体に検証関数を指定することもできます。指定した検証関数は、グループ内で独自の検証関数が指定されていないすべての設定の値を検証します。たとえば、設定グループ mylogicalsettings
を作成し、検証関数 matlab.settings.mustBeLogicalScalar
を指定します。
addGroup(s.mysettings,"mylogicalsettings",ValidationFcn=@matlab.settings.mustBeLogicalScalar);
設定 MyLogicalSetting
を mylogicalsettings
グループ内に作成し、その値を logical 値以外に設定するよう試みます。予想どおり、MATLAB はエラーをスローします。
addSetting(s.mysettings.mylogicalsettings,"MyLogicalSetting");
s.mysettings.mylogicalsettings.MyLogicalSetting.PersonalValue = 10;
Error setting 'MyLogicalSetting' in group 'mysettings.mylogicalsettings': Value must be logical or convertible to logical.
カスタム検証関数の定義
MATLAB の検証関数でカバーされない特性について設定をチェックするために、独自の検証関数を作成できます。検証関数は、設定の値の検証を目的として設計された通常の MATLAB 関数です。それらは以下の条件を満たさなければなりません。
設定値候補を入力引数として受け入れる。
出力引数がない。
検証に失敗した場合はエラーをスローする。
検証関数を MATLAB パスに配置して、利用できるようにします。
たとえば、設定の値が偶数かどうかを検証する関数を作成します。
function evenNumberValidationFcn(x) errorMsg = "Value must be an even number."; iseven = isnumeric(x) && mod(x,2) == 0; assert(iseven,errorMsg); end
この検証関数を新しい設定に追加します。
addSetting(s.mysettings,"MyEvenNumberSetting",ValidationFcn=@evenNumberValidationFcn);
MyEvenNumberSetting
の値を奇数に設定します。予想どおり、MATLAB はエラーをスローします。
s.mysettings.MyEvenNumberSetting.PersonalValue = 1;
Unable to validate settings data. Error using assert Value must be an even number. ...
また、mustBeGreaterThan
、mustBeLessThan
、mustBeGreaterThanOrEqual
、mustBeLessThanOrEqual
、mustBeMember
など、複数の入力を必要とする MATLAB 検証関数を利用したカスタム検証関数を作成することもできます。たとえば、次の関数は、設定の値が 4 つの色のいずれかであることを検証します。
function colorValidationFcn(val) mustBeMember(val,["Black" "Blue" "Yellow" "Green"]); end
設定または設定グループへの検証関数の追加の詳細については、addSetting
および addGroup
を参照してください。
参考
settings
| addGroup
| removeSetting
| removeGroup
| addSetting
| hasGroup
| hasSetting