Compose-2025:OMLのセルと構造体
Tutorial Level: Intermediate
このチュートリアルでは、以下の操作方法について説明します:
- セルを作成する。
- セルの要素を変更する。
- 構造体を作成する。
- 構造体を変更する。
- 構造体をセルに変換する。
- セルを構造体に変換する。
セルの作成
-
Editor windowで、新しいOMLスクリプトに次の行を入力します。
a = {[1,2;3,4],6-2i;'hello', [0,0,0]; false,{'I''m another cell'}}
これにより、各セルに以下の値が保持されます。a (1,1)
:行列[1,2;3,4]a (1,2)
:複素数6-2ia (2,1)
:文字列'hello'a (2,2)
:ベクトル[0,0,0]a(3,1)
:ブール型のfalse
a(3,2)
:1つの文字列要素‘I’m another cell’
のみを保持した他のセル
-
実行をクリックすると次の出力が得られます。
セルの要素の変更
-
特定の要素を参照するには
a{x,y}
を使用します。aはセルの名前、x
は行、y
は列を表します。a{2,1}
の要素を変更するには、次を追加します。a{2,1} = [5,6;7,8]
-
実行をクリックすると次の結果が得られます。
この例では、[2,1]の要素が文字列
'hello'
から行列[5,6;7,8]に変更されたことがわかります。
構造体の作成
-
Editor windowで、新しいOMLスクリプトに次の内容を入力します。
student.name = ‘Bob’; student.age = 16; student.id = 8051
次のようにstruct()を使用して、同様の代入操作を実行することもできます。
student = struct(‘name’,’Bob’,’age’,16,’id’, 8051)
これにより、年齢、ID、名前を3つのフィールドとする構造体が作成されます。これらのフィールドに相当する値は、それぞれ
16
、8051
、Bob
です。 -
実行をクリックするとOMLコマンドウィンドウに次の出力が得られます。
Variableブラウザで、studentの前に表示されている
+
記号をクリックすると次のように構造体が展開され、そのフィールドと値を確認できます。
構造体の変更
-
student
構造体に新規フィールドとしてscore
を追加するには、次のコマンドを使用します。student.score = ‘A’
または、次のように指定します。
setfield(student,’score’,’A’)
どちらの方法でも次の結果が返されます。
-
既存の構造体からフィールドを削除するには、rmfield関数を使用する必要があります。例えば、
student
構造体からage
フィールドを削除するには、次のコマンドを使用します。rmfield(student,’age’)
次の結果が返されます。
構造体からセルへの変換
struct2cell
を呼び出すことで、構造体を容易にセルに変換できます。元の構造体のフィールドは、次のように数字のインデックスに変わります。student.name = 'Bob';
student.age = 18;
student.id = 8015
% transfer a struct to a cell
struct2cell(student)
次の結果が返されます。

セルから構造体への変換
Cell = {'Bob','Lily','Emma';20,18,25;8051,8052,8053};
Fields = {'name','age','id'};
Struct = cell2struct(Cell,Fields)
このスクリプトでは、名前、年齢、IDの各フィールド名を持つ構造体にセルを変換します。

Variableブラウザで、構造体の前に表示されている+
記号をクリックすると構造体が展開されます。Variableブラウザの表示は次のようになります。
