MATLAB新手:使用sprintf时出错。没有为'matlab.graphics.GraphicsPlaceholder'输入

时间:2015-10-09 19:37:30

标签: matlab printf string-formatting

今天我尝试运行某人给我的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);

我会非常感谢有关如何解决这个问题的任何提示。

1 个答案:

答案 0 :(得分:1)

如果h是一个引用某个对象的句柄,那么在R2015a及更高版本中这就是对象本身,而在以前的版本中,它是一个指向对象的双重(正如你在题)。您可以在R2015a及更高版本中使用h.double来获取之前为h的内容。例如,在R2015a之前h = figure(999)h设为999,为双倍; R2015a及更高版本h是对象,h.double999