从绘图中提高MATLAB变量/数据点的精度

时间:2014-11-24 23:52:04

标签: matlab

我正在绘制一个控制系统,我需要证明MATLAB的稳态误差与我的计算一致。

我的计算给了我0.000833333,在图上,数据提示标记的精度非常低(我选择的位置没有小数点)。

但是,我可以右键单击标记并选择Export cursor data to workspace...

这为我提供了X=98.0037Y=98.0028

的位置

这给了我一个0.0009的错误,所以它不是计算中的0.00083333。我知道这是正确的,但我想知道如果可能的话,如何提高4位小数点以外的变量/数据点的精度。

enter image description here

1 个答案:

答案 0 :(得分:4)

有许多不同的途径可以从这些数据提示游标中获得更多精确度:

1)手动导出:

正如您在问题中提到的,右键单击数据提示,然后选择Export cursor data to workspace...。我们假设你在默认变​​量cursor_info中导出它,然后得到一个包含3个字段的结构:

cursor_info = 
       Target: 492.0040
     Position: [7.3593e+05 10.6353]
    DataIndex: 7

Target是光标对齐的line对象的句柄
Position是一个1x2向量,提供所选数据点的xy坐标(如果定义了z坐标,它将具有第三个值)
DataIndex是用于绘制线的数组中所选数据点坐标的索引。所以你也可以要求:

>> x(7) %// or "x(cursor_info.DataIndex)" would be the same
ans =
   7.3593e+05
>> y(7)
ans =
   11.3200

现在默认情况下,控制台中值的显示限制为几位数,但变量中的数字具有更高的精度。 2种显示更高精度的方法:

第一种方法是在控制台中键入format long。之后,控制台中的所有数字输出都将是15位数字:

>> cursor_info.Position
ans =
   1.0e+05 *
   7.359289702215524   0.000106353183026

第二种方法是使用格式说明符sprintffprintf来强制所需的精度:

>> fprintf('x=%15.15d y=%g \n',cursor_info.Position)
x=7.359289702215524e+05 y=10.6353

2)以编程方式导出

除了手动导出cursor_info数据外,您还可以使用代码调用它:

dcm = datacursormode(gcf) ;
cursor_info = dcm.getCursorInfo ;

然后,您获得与手动导出相同的cursor_info变量。显示值的方式可以与上面相同。

3)直接显示(按照所需精度)。

您还可以完全自定义数据提示将显示的内容,不仅包括位置,还包括一些计算或转换的值。右键单击数据提示,然后选择Edit text update function。这将打开一个编辑器窗口,其中包含数据提示的当前代码,它基本上查询数据提示位置并创建要显示的文本单元格数组。根据需要修改此功能,然后将其保存在可以检索它的位置。

对于我正在使用的数据的示例,我以不同的精度显示xy坐标,然后基于2个值进行计算,我还转换{{1}坐标到日期表示。

x

此示例将显示如下数据提示: datatip

之后,在任何后续的图或图中,您可以通过右键单击数据提示function output_txt = myModifiedDatatip(obj,event_obj) pos = get(event_obj,'Position'); output_txt = {['X: ',num2str(pos(1),12)],... %// default code, only the output precision is changed ['Y: ',num2str(pos(2),8)]}; %// add all the informations you want to calculate and display directly here: output_txt{end+1} = ['error (y-x): ',sprintf('%16f', pos(2)-pos(1))]; %// difference between x and x output_txt{end+1} = ['Date: ', datestr(pos(1))]; %// display the date/time 重新应用此数据提示格式,然后指向您之前保存的数据提示功能。