1

私はより良いタイトルを見つけることができなかったので、matlabについて少し混乱しています。

私は次の構造を持っています

testit.m
+package
   testfile.m

testit.m には以下が含まれます。

import package.testfile

testfile 

testfile.m には以下が含まれます。

view = struct();
v = uiextras.Grid( 'Spacing', 5 );
view.view = v;
view.axes = axes( 'Parent', view.view ); 

ベースディレクトリに cd して入力testitすると、次のエラーが表示されます。

??? Error using ==> axes
Conversion to double from unknown is not possible.

Error in ==> testfile at 4
view.axes = axes( 'Parent', view.view );
Error in ==> testit at 3
testfile 

ここまでは順調ですね。しかし、testfile.m をパッケージに入れず、testfile.m を介して直接呼び出すと、すべて正常に動作します。testfile.m の最後の行を

view.axes = axes( 'Parent', v ); 

構造体を使用してグリッドにアクセスしないようにすると、エラーが発生します。

??? No method 'onChildAddedEvent' with matching signature found for class 'uiextras.Grid'.

Error in ==> Container>@(varargin)obj.onChildAddedEvent(varargin{:}) at 95
            obj.Listeners{end+1,1} = handle.listener( containerObj, 'ObjectChildAdded', @obj.onChildAddedEvent );

Warning: Error occurred while evaluating listener callback. 
> In testfile at 4
  In testit at 3

uiextras はhttp://www.mathworks.com/matlabcentral/fileexchange/27758から来ています

ファイルをパッケージに入れるかどうかで違いが生じるのはなぜですか? v と view.view のどちらを使用しても違いが生じるのはなぜですか? matlab の構文を誤解しているだけですか?

4

1 に答える 1

1

これ自体は答えではありませんが、私のようにこの投稿にたどり着いた他の人には役立つかもしれません。Matlab ファイル エクスチェンジの一部のファイルには、GUI レイアウト ツールボックス (+uiextras) のバージョンや一部が含まれています。File Exchange の独自のエントリから直接ダウンロードされた GUI Layout Toolbox (+uiextras) の「実際の」インスタンスに加えて、パス内のこれらの他の File Exchange ダウンロードの 1 つに +uiextras の 1 つのインスタンスがある場合、問題が発生する可能性があります。 .

+uiextras の標準レイアウトに軸/ボタン/uitables/etc を入力すると、上記の Ferio のようなエラーが発生しました。

Error in ==> Container>@(varargin)obj.onChildAddedEvent(varargin{:}) at 95
        obj.Listeners{end+1,1} = handle.listener( containerObj, 'ObjectChildAdded', @obj.onChildAddedEvent );

しばらく前にテストしたランダムな File Exchange ダウンロード内のパスに +uiextras の別のインスタンスがあることが判明しましたが、もう使用していません。他の File Exchange ダウンロード用のフォルダー全体を削除しました (振り返ってみると、おそらくパスから削除するだけで十分でした)。今では、GUI Layout Toolbox で問題なく動作します。

エラー リンクをたどることで、これが同じ問題であるかどうかを確認できます。エラーが発生するuiextrasで何かをしてください。エラーの行番号 (この場合は 95 行目) へのリンクをクリックすると、エラーが発生したファイルが開きます。私にとって、そのファイルは、このランダムな他のファイル交換ダウンロードの中にある別の +uiextras フォルダーの中にありました。そのフォルダーを削除したところ、問題は解決しました。

于 2013-11-10T15:01:59.460 に答える