MATLAB 新手:使用 sprintf 时出错。未为 'matlab.graphics.GraphicsPlaceholder' 个输入定义函数
MATLAB newbie: error using sprintf. Function is not defined for 'matlab.graphics.GraphicsPlaceholder' inputs
今天我尝试 运行 别人给我的 MATLAB m 文件。对他来说效果很好,但我遇到了警告和错误(如下)。我正在使用 Mac 和 OS X Yosemite (10.10.5) 和新版本的 MATLAB (R2015b)。准备 m 文件的人会使用较旧的文件并且 Windows.
从 Mathworks 的博客和帖子 online/here,错误似乎是由于 MATLAB 更新引起的——从使用数值指向图形对象到使用对象本身。我在理论上理解这一点,但不知道如何修复我的代码(我已经好几年没经常使用 MATLAB 了,所以我很迷茫)。
Warning: Text handle output is not supported when a contour handle
argument is supplied and label placement is automatic.
In clabel (line 214)
In control_volume_20150706>plot_xxx (line 733)
In control_volume_20150706 (line 104)
In run (line 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 行附近的代码:
Line 731 contourlevels = omegamat(1, :) ;
Line 732 [C,h] = contour(X,
Y, flipud(omegamat), contourlevels, 'LineWidth', 2 );
Line 733
text_handle = clabel(C,h);
Line 734 sprintf('%10.4f \n',text_handle);
如能提供有关如何处理此问题的任何提示,我将不胜感激。
如果 h
是一个指向某个对象的句柄,那么在 R2015a 及更高版本中,这是对象本身,而在以前的版本中,它是一个指向对象的双精度数(如您在问题中所述).您可以在 R2015a 及更高版本中使用 h.double
来获得之前的 h
。例如,R2015a 之前的 h = figure(999)
会将 h
设置为 999
,一个双精度值; R2015a 及更高版本 h
是一个对象,h.double
是 999
。
今天我尝试 运行 别人给我的 MATLAB m 文件。对他来说效果很好,但我遇到了警告和错误(如下)。我正在使用 Mac 和 OS X Yosemite (10.10.5) 和新版本的 MATLAB (R2015b)。准备 m 文件的人会使用较旧的文件并且 Windows.
从 Mathworks 的博客和帖子 online/here,错误似乎是由于 MATLAB 更新引起的——从使用数值指向图形对象到使用对象本身。我在理论上理解这一点,但不知道如何修复我的代码(我已经好几年没经常使用 MATLAB 了,所以我很迷茫)。
Warning: Text handle output is not supported when a contour handle argument is supplied and label placement is automatic.
In clabel (line 214)
In control_volume_20150706>plot_xxx (line 733)
In control_volume_20150706 (line 104)
In run (line 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 行附近的代码:
Line 731 contourlevels = omegamat(1, :) ;
Line 732 [C,h] = contour(X, Y, flipud(omegamat), contourlevels, 'LineWidth', 2 );
Line 733 text_handle = clabel(C,h);
Line 734 sprintf('%10.4f \n',text_handle);
如能提供有关如何处理此问题的任何提示,我将不胜感激。
如果 h
是一个指向某个对象的句柄,那么在 R2015a 及更高版本中,这是对象本身,而在以前的版本中,它是一个指向对象的双精度数(如您在问题中所述).您可以在 R2015a 及更高版本中使用 h.double
来获得之前的 h
。例如,R2015a 之前的 h = figure(999)
会将 h
设置为 999
,一个双精度值; R2015a 及更高版本 h
是一个对象,h.double
是 999
。