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