Matlab GUIを使用して、ボタンを押すとリアルタイムでオーディオ出力を切り替えるプロジェクトに取り組んでいます。私はMatlab GUIDEファイルと、GUIアクションを聞くAudio System Toolboxを使った関数を持っています。OpeningFcn Matlab GUIDE - 正しい順序でハンドルと呼び出し関数を初期化する
GUIDEファイルには、GUIが表示される前にさまざまなハンドルを宣言するOpeningFcnがあります。 OpeningFcnでは、 "handles.AttenuationFactor"を宣言します。ユーザーが後でGUIのボタンを押すと、handles.AttenuationFactorがそれに応じて変更されるという考えがあります。
私は別の機能をGUIアクションで聴くことに問題はありません。
gui = findobj('Tag','GUI’);
if ~isempty(gui)
% get handles
gdata = guidata(gui);
AttenuationFactor = gdata.AttenuationFactor;
end
%% Perform calculations with attenuation factor
GUIのハンドルを取得するにはどうすればいいですか:GUIをリッスンする関数はいつ呼びますか?
コードguidata(hObject、handles)の最後の行がまだ呼び出されていないため、 'GUIから'情報を取得するときに 'handles.attenuationFactor'が存在しないため、OpeningFcnで呼び出すことはできません!
私はbuttonpressのコールバック関数に関数呼び出しを入れようとしましたが、それはすべてのbuttonpressで評価されるコードを一度しか作成しないでください。
関数呼び出しの前にハンドルを強制的に更新する方法はありますか?
お返事ありがとうございます。 私は他の関数でattenuationFactorという変数を作り、それを0に設定しました。次に、isfield(gdata、 'attenuationFactor')を使ってハンドルをチェックし、プログラムが初期化されていないかどうか確認しました存在しないハンドルを見つけようとするとクラッシュします。 – matiastofteby
それはまた働くべきです – 16per9