Matlab 如何将double转换为对象句柄以绘制等高线图?

Matlab 如何将double转换为对象句柄以绘制等高线图?,matlab,Matlab,我在MATLAB中与app designer合作,让用户输入一组参数,按下一个按钮,然后生成等高线图。该应用程序首先使用dlmread将3个独立文件中的数据保存到工作区。然后,我们的目标是在同一个GUI上生成一个对应的等高线图,该GUI使用来自这3个文件my x、y和z参数的数据 但是,当我运行该程序时,会出现一个错误,显示: "Error setting property 'HetroTransSpec' of class 'Parameters': Cannot convert double

我在MATLAB中与app designer合作,让用户输入一组参数,按下一个按钮,然后生成等高线图。该应用程序首先使用dlmread将3个独立文件中的数据保存到工作区。然后,我们的目标是在同一个GUI上生成一个对应的等高线图,该GUI使用来自这3个文件my x、y和z参数的数据

但是,当我运行该程序时,会出现一个错误,显示:

"Error setting property 'HetroTransSpec' of class 'Parameters':
Cannot convert double value 5 to a handle"
app.HetroTransSpec是我的等高线图的名称。参数是我的GUI应用程序的名称。我将介绍代码:

function SetParametersButtonPushed(app, event)
    spec = dlmread('/Users/******/MATLAB/SphoHetroTest/Spec3.txt'); %Load spec file
    assignin('base', 'spec', spec);
    pop=dlmread('/Users/******/MATLAB/SphoHetroTest/pop.txt');
    assignin('base', 'pop', pop);
    lambda=dlmread('/Users/******/MATLAB/SphoHetroTest/lambda.txt'); %read wavelenght axis (nm)
    assignin('base', 'lambda', lambda);
现在,这是我的代码,用这些参数spec,pop,lambda来生成等高线图。但我得到了一个错误:

app.HetroTransSpec = contourf(pop,lambda,spec);

任何帮助都将不胜感激

等高线图的结果不是句柄,而是等高线数据,与其他一些绘图功能不同

尝试:


也许是个愚蠢的问题,但我该为[~,handle]做什么?@P_Drach do for?在您的问题中,您需要给app.HetroTransSpec一个句柄,正如错误所说。虽然大多数打印功能(例如plot、surf)返回句柄,因此您可以执行app.HetroTransSpec=surf…,但contour返回一个矩阵,其轮廓类型为double,请参见错误?作为第一个输出,句柄是第二个输出。我显示的代码忽略了第一个输出,捕获了第二个输出并将其提供给app.HetroTransSpec
[~,handle]= contourf(pop,lambda,spec);
app.HetroTransSpec =handle;