在 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