【问题标题】:Exporting data in zoomed in region of MATLAB plot to workspace将 MATLAB 图的放大区域中的数据导出到工作区
【发布时间】:2015-08-23 11:39:52
【问题描述】:

我在 x 轴链接的 MATLAB 图中有 4-5 个时间序列数据和散点图的子图。数据很长,我已经放大了图的一小部分。现在我只想将这个放大部分中包含的数据作为变量导出到工作空间。有可能吗?

例如,以下是完整数据集的图。

以下是放大的部分,

现在我想将上述放大部分对应的所有变量或变量的时间段导出到工作区。

【问题讨论】:

  • 当然:使用 get(gca, 'XLim') 获取 x 轴的限制并相应地索引您的数组。

标签: matlab matlab-figure


【解决方案1】:

根据 Ratbert 的评论,让我们设置一个示例图来玩。

x = 1:10;
h.myfig = figure();
h.myaxes = axes('Parent', h.myfig);
h.myplot = plot(x);

我假设您拥有 MATLAB R2014b 或更新版本,即 MATLAB switched graphics handles to objects。如果您有旧版本,您可以在适当的情况下将我的所有点符号与 getset 调用交换。

现在有了这个初始图,如果我们输入 h.myaxes.XLimget(h.myaxes, 'XLim'),我们会返回:

ans =

     1    10

现在,如果我们任意放大并拨打相同的电话,我们会得到不同的结果。就我而言:

ans =

    3.7892    7.0657

现在由您决定如何使用这些信息来显示您的数据。一个非常基本的方法是使用find 来获取最接近这些限制的数据点的索引。

例如:

newlimits = h.myaxes.XLim;
newminidx = find(x >= floor(newlimits(1)), 1);
newmaxidx = find(x >= ceil(newlimits(2)), 1);

newmin = x(newminidx);
newmax = x(newmaxidx);

返回 [newmin, newmax] 的:

ans =

     3     8

我在这里使用了floorceil,因为我知道我的数据是整数,您的标准可能不同但过程相同。希望这足以让您入门。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-20
    相关资源
    最近更新 更多