将MATLAB绘图放大区域中的数据导出到工作空间

时间:2015-06-08 20:44:20

标签: matlab matlab-figure

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

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

enter image description here

以下是放大部分,

enter image description here

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

1 个答案:

答案 0 :(得分:2)

根据Ratbert的评论,让我们设置一个样本情节来玩。

//These are the above-standard variables (Not like int, double and float)
List<string> myStrings; //List of strings
List<int> myInts; //List of integers
ContentManager contentOne; //This loads specific content
ContentManager contentTwo; //This loads other specific content
Texture2D myTexture; //This is loaded with "contentOne"
SoundEffect mySound; //This is loaded with "contentTwo"

//This is where the content is unloaded
void UnloadContent()
{
    //All of the content managers are unloaded
    contentOne.Unload();
    contentTwo.Unload();

    //All of the lists are cleared
    myInts.Clear();
    myStrings.Clear();

    //This is an added precaution
    Dispose()
}

我假设你有MATLAB R2014b或更新,这是MATLAB switched graphics handles to objects的地方。如果您使用的是旧版本,则可以在适当情况下将所有点符号与getset电话互换。

现在有了这个初始图,如果我们输入x = 1:10; h.myfig = figure(); h.myaxes = axes('Parent', h.myfig); h.myplot = plot(x); h.myaxes.XLim,我们会返回:

get(h.myaxes, 'XLim')

现在,如果我们随意放大并进行相同的调用,我们会得到不同的东西。就我而言:

ans =

     1    10

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

例如:

ans =

    3.7892    7.0657

返回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]

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