0

MATLAB で、すべての情報をファイルに保存するために、削除する前に呼び出されるコールバック関数を含むテーブルを作成しました。

t=uitable;
set(t,'Data',V1);
set(t,'ColumnEditable',c);
set(t,'DeleteFcn',@closeCallback);
waitfor(t); %wait until table closes

これはコールバック関数です:

function closeCallback(src,eventdata)
%%
%this a callback function
h=gcbo();
A=table2array(h);
h=msgbox('Hi, I work!');
end

通常のプログラムで使用できるように、数値配列を保存するつもりです。

4

1 に答える 1

0

@ user3273814 が指摘するように、関数 table2array は uitable には使用されません。これはテーブル データ型用であり、ここでは関係ありません。

必要な作業は、closeCallback 関数を次のように書き直すことだけです。

function closeCallback(src,eventdata, handles) %See changes here
  %%
  %this a callback function
  h=gcbo();
  %A=table2array(h);
  A = get(handles.t, 'Data') % See changes here
  h = msgbox('Hi, I work!');
end

handles は、イベントがトリガーされたときに MATLAB によって自動的に作成されるグローバル オブジェクトであり、すべてのグラフィックス オブジェクト (この場合は t という名前の uitable) への参照が含まれていることに注意してください。

get を使用して、作成された handles.t オブジェクトの 'Data' プロパティを抽出しています。uitable の内容が数値のみの場合、cell2mat を使用して、返されたデータ型を数値にキャストできます。

于 2014-07-16T20:29:55.627 に答える