0

現在、ユーザー入力データに基づいてグラフをプロットする GUI に取り組んでいます。ユーザーが編集ボックスを使用して数値を入力すると、そこからプロットが生成されます。

周期と周波数の 2 つの値があり、数学的には相互に依存していることがわかります (p=1/f およびその逆)。頻度を編集すると、期間の新しい値が計算されるようになったと思いますが、ユーザーが頻度の新しい値を入力するたびに、期間編集ボックスに期間の新しい値を表示することもしたいと思います. 説明のために、ここに私が今持っている周波数編集ボックスのコードを示します。

%period (ns)
function edit11_Callback(hObject, eventdata, handles)
num = str2double(get(hObject,'string'));
%global edit10;%brings frequency to edit11 function
%global edit11;%globalize period
handles.edit11 = num;
handles.edit10 = 1/num;%frequency = 1/period
set(handles.edit10,'String',num2str(1/num));%displays new frequency
guidata(hObject,handles)

注: edit10 は期間の編集ボックスです。そのコードは、私が持っている頻度の逆のようなものになると思います。また、「global」行は、私がやろうとしていることには必要ないように思われるのでコメントアウトしましたが、試してみました。

「handles.edit10 = 1/数値;」期間の実際の値を更新します。私の知る限り、最後の行 (guidata(...)) は、handles.edit10 と handles.edit11 の新しい値をグローバルに保存しますが、それが間違っている場合は修正してください。

機能しないのは、「set(handles.edit10,'String',num2str(1/num));」という行です。この行は、期間編集ボックス (edit10) に期間の新しい値を表示するはずです。

表示されるエラー メッセージは次のとおりです。

Error using handle.handle/set
Invalid or deleted object.

Error in Liposome_GUI>edit11_Callback (line 367)
set(handles.edit10,'String',num2str(1/num));%displays new frequency

Error in gui_mainfcn (line 95)
    feval(varargin{:});

Error in Liposome_GUI (line 42)
gui_mainfcn(gui_State, varargin{:});

Error in @(hObject,eventdata)Liposome_GUI('edit11_Callback',hObject,eventdata,guidata(hObject))


Error while evaluating uicontrol Callback

エラー メッセージは、関数 edit11 が handles.edit10 に格納されている値にアクセスできないように見えますが、これら 2 つの「グローバル」行を edit10 関数と edit11 関数の両方の下に配置しても何も変わらないようです。

誰が私が間違っているのか教えてもらえますか?

4

2 に答える 2