如何删除给定值的行数组中的行

时间:2019-06-10 22:40:55

标签: matlab matlab-app-designer

在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脚本中完美运行,但不适用于应用程序设计器,我不确定为什么。

跟进:我只是使用了class函数,显然我的向量在app-designer中存储了double,但是它在常规的matlab中存储了类...我不知道为什么向量中的元素会是double

跟进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

0 个答案:

没有答案