1

matlab では、プロットしたすべての行を次のように保存しました。

app.cplxPlot(app.cplxPlotNumber)= plot(app.UIAxes[app.var.cplx(1);app.var.cplx(1)],[50;250], 'g');

物事を一般的にするために、私がこれをしたかのようです:

cplxPlot(location)=plot(app.UIAxes,[cplxPlot(1);cplxPlot(1)],[50;250],'g');

これは基本的に一連の垂直線を格納します。特定の x 値を持つ行を削除したいと思います。matlab のコマンド ラインで、この単純な if ループを実行して、最初のプロットの x 値が 20 であるかどうかを確認しましたが、うまくいきました。

  if length(find(cplx1Plot(1).XData==value,1,'first'))==1
        disp('wow')

    end

しかし、アプリ デザイナーでは、まったく同じコード:

if length(find(app.cplx1Plot(1).XData==value,1,'first'))==1
    app.Label.Text='wow'

end

「このタイプの変数では、ドット インデックスはサポートされていません」というエラーが表示されます。誰かが私が間違っていることを教えてもらえますか? matlab スクリプトでは完全に機能しましたが、アプリ デザイナーでは機能しませんでした。その理由はわかりません。

フォローアップ:クラス関数を使用したところ、どうやら私のベクトルは app-designer に double を格納しているようですが、クラスを通常の matlab に格納しています...ベクトルの要素が double になる理由がわかりません。

フォローアップ 2.0: どうやら、行を格納するためにプロパティにアクセスすると、double として格納されますが、代わりにローカル変数にすることを選択すると、行になります。これをプロパティ/グローバル変数にする必要がありますが、なぜそれが double として格納されるのかわかりません...

たとえば、bob はこのシナリオで double を格納します。

        bob(1)= plot([.005;.005],[100;200],'g')
        app.Label.Text=string(class(bob(1)));

しかし、bob ストアは次のように 2 倍になります。

        app.bob(1)= plot([.005;.005],[100;200],'g')
        app.Label.Text=string(class(app.bob(1)));

コンテキストとして、次のようにプロパティで bob を宣言しました。

bob
4

0 に答える 0