首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在matlab中从图形中提取数据?

如何在matlab中从图形中提取数据?
EN

Stack Overflow用户
提问于 2015-11-26 09:16:57
回答 1查看 1.4K关注 0票数 5

我在一个独特的.fig中保存了不同的Matlab图形。数字如下:

现在,我想在这些图中引入一个过滤器,以减少噪音,但不幸的是,我丢失了生成这些信号的代码。

是否有方法提取该图形中每个信号的数据?我试过这个:

代码语言:javascript
复制
open('ttc_delay1000.fig'); 
h = gcf; %current figure handle
axesObjs = get(h, 'Children');  %axes handles
dataObjs = get(axesObjs, 'Children'); %handles to low-level graphics objects in axes

objTypes = get(dataObjs, 'Type');  %type of low-level graphics object

xdata = get(dataObjs, 'XData');  %data from low-level grahics objects
ydata = get(dataObjs, 'YData');

但我很困惑,我不知道这是否是正确的行为方式。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-26 09:35:15

一条解决你问题的单线:

代码语言:javascript
复制
data = get(findobj(open('ttc_delay1000.fig'), 'Type','line'), {'XData','YData'});

步骤在那里(从内部调用到外部调用):

  • 打开档案;
  • 调查它的线系列;
  • 返回数据。

data{n,1}将包含XData of LineSeries number n,wile data{n,2}将包含所述LineSeriesYData

如果您想在图中直接平滑线条,则想法是相同的:

代码语言:javascript
复制
    %//Prepare moving average filter of size N
    N = 5;
    f = @(x) filter(ones(1,N)/N, 1, x);

    %//Smooth out the Y data of the LineSeries
    hf = open('ttc_delay1000.fig');
    for hl = transpose(findobj(hf,'Type','line'))
            set(hl, 'YData', f(get(hl,'YData')));
    end;
    saveas(hf, 'ttc_delay1000_smooth.fig');
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33934595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档