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 中存储双精度,但它在常规 matlab 中存储类......我不知道为什么向量中的元素会是双精度。

跟进 2.0:显然,如果我访问一个属性来存储一行,它将存储为双精度,但如果我选择将其设为局部变量,它将是一行。我需要这是一个属性/全局变量,并且不明白为什么它会被存储为双精度...

例如,在这种情况下,bob 存储双倍:

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

但是,鲍勃商店在这方面翻了一番:

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

对于上下文,我在我的属性中声明了 bob,如下所示:

bob
4

0 回答 0