今天我尝试运行某人给我的MATLAB m文件。它适用于他,但我遇到了警告和错误(如下)。我正在使用Mac OS X Yosemite(10.10.5)和新版MATLAB(R2015b)。准备m文件的人将使用较旧的文件和Windows。
来自Mathworks的博客和在线/此处发布,错误似乎是由于MATLAB更新 - 从使用数值指向图形对象到使用对象本身的更改。我在理论上理解这一点,但不知道如何修复我的代码(自从我经常使用MATLAB以来已经有好几年了,所以我很遗憾)。
警告:轮廓句柄时不支持文本句柄输出 提供参数并自动标签放置。
在clabel(第214行)
在control_volume_20150706> plot_xxx(第733行)中 在control_volume_20150706(第104行)中 在跑步(第96行)使用sprintf时出错 函数未定义 'matlab.graphics.GraphicsPlaceholder'输入。
control_volume_20150706> plot_xxx(第734行)出错 sprintf('%10.4f \ n',text_handle);
control_volume_20150706(第104行)plot_xxx(nr, xwidevec,yhighvec,omegamat,psimat,umat,vmat,...
运行错误(第96行)evalin('caller',[script';']);
这是代码在733行附近的样子:
731行等高线= omegamat(1,:);
732行[C,h] =轮廓(X, Y,flipud(omegamat),contourlevels,'LineWidth',2);
733行 text_handle = clabel(C,h);
第734行sprintf('%10.4f \ n',text_handle);
我会非常感谢有关如何解决这个问题的任何提示。
答案 0 :(得分:1)
如果h
是一个引用某个对象的句柄,那么在R2015a及更高版本中这就是对象本身,而在以前的版本中,它是一个指向对象的双重(正如你在题)。您可以在R2015a及更高版本中使用h.double
来获取之前为h
的内容。例如,在R2015a之前h = figure(999)
将h
设为999
,为双倍; R2015a及更高版本h
是对象,h.double
是999
。