9

.figいくつかとそれに対応する.mファイルをパッケージに入れようとしています。

私は持っています:

 +ui/mainWindow.fig
 +ui/mainWindow.m

しかし、mainWindow.figMatlabを実行しようとすると、GUIDEからエラーが出力されます。

  Error using feval
  Undefined function or variable mainWindow

面白いのは、完全修飾名で呼び出すと、次のようになります。

 ui.mainWindow

ウィンドウは正常に表示されます(ただし、すべてのコールバックが機能するわけではありません)。

私はimport ui.* それを実行する前にしようとしました。

私はこれを一種のとしてやりたいことに注意してくださいnamespace。アプリケーション全体をMatlabのグローバルスコープに入れたくありません。

4

1 に答える 1

5

説明

基本的な問題は、MATLABGUIDEがパッケージを認識しないことです。通常、コールバック名を自動的に管理し、.mファイルと.figファイルの同期を維持し、誰もが満足しています。Figureがパッケージ内にある場合、.figプロパティのコールバックを適切に更新できません。これらは、正しいui.mainWindowではなく、修飾されていない名前mainWindowを指します。その後、すべてのコールバックは失敗します。

回避策

これを回避する2つの方法:

  • 図をエクスポートしますGuide -> File -> Export。このファイルを+uiフォルダー内に配置します。ファイルを開き、find-replaceを実行して、@(hObject、eventdata)mainWindowのすべてのインスタンスを@ (hObject、eventdata)ui.mainWindowに置き換えます。

  • または、エクスポートせずに、 GUIDE自体の中で直接参照を手動で更新することもできます。ボタンと要素ごとにRight Click -> Property Inspector、[コールバック]フィールドを編集して、mainWindowui.mainWindowに置き換えます。

個人的には、すべてのオカレンスを1つのfind-replaceコマンドで置き換えることができるため、最初のソリューションを好みます。

于 2012-12-15T02:28:30.100 に答える