Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

App Designer アプリの table 配列データ型

table 配列は、表形式データを MATLAB® 変数として保存する場合に便利です。たとえば、関数 readtable を呼び出して、スプレッドシートから table 配列を作成することができます。

一方、Table UI コンポーネントは、アプリ内に表形式データを表示するユーザー インターフェイス コンポーネントです。R2018a 以降は、Table UI コンポーネントに表示できるデータ型に table 配列が含まれます。関数 uifigure で作成された App Designer のアプリおよび Figure のみが table 配列をサポートします。

アプリに table 配列データを表示すると、特定のデータ型の対話型機能を利用できます。また、Table UI コンポーネントがサポートする他の型の配列とは異なり、table 配列データは、Table UI コンポーネントの ColumnFormat プロパティに従って表示されません。

logical データ

Table UI コンポーネントでは、logical 値はチェック ボックスとして表示されます。true 値はオンで、false 値はオフです。Table UI コンポーネントの ColumnEditable プロパティが true の場合、ユーザーはアプリ内でチェック ボックスを選択してオフにすることができます。

fig = uifigure;
tdata = table([true; true; false]);
uit = uitable(fig,'Data',tdata);
uit.Position(3) = 130;
uit.RowName = 'numbered';

categorical データ

categorical 値はドロップダウン リストまたはテキストとして表示されます。Table UI コンポーネントの ColumnEditable プロパティが true の場合、カテゴリはドロップダウン リストに表示されます。それ以外の場合は、カテゴリはドロップダウン リストなしのテキストとして表示されます。

fig = uifigure;
cnames = categorical({'Blue';'Red'},{'Blue','Red'});
w = [400; 700];
tdata = table(cnames,w,'VariableNames',{'Color','Wavelength'});
uit = uitable(fig,'Data',tdata,'ColumnEditable',true);

categorical 配列が保護されていない場合、ユーザーは実行中のアプリでセルに入力することによって新しいカテゴリを追加できます。

datetime データ

datetime 値は、対応する table 変数 (datetime 配列) の Format プロパティに従って表示されます。

fig = uifigure;
dates = datetime([2016,01,17; 2017,01,20],'Format','MM/dd/uuuu');
m = [10; 9];
tdata = table(dates,m,'VariableNames',{'Date','Measurement'});
uit = uitable(fig,'Data',tdata);

形式を変更するには、ドット表記を使用して table 変数の Format プロパティを設定します。次に、Table UI コンポーネント内のデータを置換します。

tdata.Date.Format = 'dd/MM/uuuu';
uit.Data = tdata;

Table UI コンポーネントの ColumnEditable プロパティが true の場合、ユーザーはアプリ内で日付値を変更できます。列が編集可能な場合、アプリでは、datetime 配列の Format プロパティに従った入力値が想定されます。ユーザーが無効な日付を入力すると、テーブルに表示される値は NaT になります。

duration データ

duration 値は、対応する table 変数 (duration 配列) の Format プロパティに従って表示されます。

fig = uifigure;
mtime = duration([0;0],[1;1],[20;30]);
dist = [10.51; 10.92];
tdata = table(mtime,dist,'VariableNames',{'Time','Distance'});
uit = uitable(fig,'Data',tdata);

形式を変更するには、ドット表記を使用して table 変数の Format プロパティを設定します。

tdata.Time.Format = 's';
uit.Data = tdata;

Table UI コンポーネントの ColumnEditabletrue の場合でも、duration 値を含むセルは実行中のアプリでは編集できません。

非スカラー データ

非スカラー値のアプリ内での表示方法は、コマンド ウィンドウでの表示と同じです。たとえば、次の table 配列には 3 次元配列と struct 配列が含まれています。

fig = uifigure;
arr = {rand(3,3,3); rand(3,3,3)};
s = {struct; struct};
tdata = table(arr,s,'VariableNames',{'Array','Structure'});
uit = uitable(fig,'Data',tdata);

複数列の table 配列変数が、コマンド ウィンドウでの表示と同様に、アプリ内でも列の組み合わせとして表示されます。たとえば、この table 配列の変数 RGB は 3 行 3 列の配列です。

n = [1;2;3];
rgbs = [128 122 16; 0 66 155; 255 0 0];
tdata = table(n,rgbs,'VariableNames',{'ROI','RGB'})
tdata =

  3×2 table

    ROI           RGB       
    ___    _________________

     1     128    122     16
     2       0     66    155
     3     255      0      0

Table UI コンポーネントでも同様の表示となります。RGB 列で項目を選択すると、その行のサブ列がすべて選択されます。Table UI コンポーネントの ColumnEditable プロパティが true の場合でも、サブ列内の値は実行中のアプリでは編集できません。

fig = uifigure;
uit = uitable(fig,'Data',tdata);

欠損データ値

欠損値は、データ型に従ってインジケーターとして表示されます。

  • 欠損 string は <missing> として表示されます。

  • 未定義の categorical 値は <undefined> として表示されます。

  • 無効または未定義の数値または duration 値は NaN として表示されます。

  • 無効または未定義の datetime 値は NaT として表示されます。

Table UI コンポーネントの ColumnEditable プロパティが true の場合、ユーザーは実行中のアプリ内で値を修正できます。

fig = uifigure;
sz = categorical([1; 3; 4; 2],1:3,{'Large','Medium','Small'});
num = [NaN; 10; 12; 15];
tdata = table(sz,num,'VariableNames',{'Size','Number'});
uit = uitable(fig,'Data',tdata,'ColumnEditable',true);

例: table 配列を表示するアプリ

このアプリでは、table 配列データを使用するアプリ内で Table UI コンポーネントを表示する方法を示します。table 配列には、numericlogicalcategorical、および複数列の変数が含まれています。

StartupFcn コールバックにより、スプレッドシートが table 配列に読み込まれます。次に、データのサブセットが表示され、アプリ内でプロットされます。一方のプロットには元の table データが表示されます。もう一方のプロットは、まず同じ table データを表示し、その後ユーザーが Table UI コンポーネントで値の編集や列の並べ替えを行うと更新されます。

参考

|

関連するトピック