我已将不同的Matlab图保存在唯一的.fig中。如下图所示:现在,我想在这些图中引入一个滤波器以减少噪声,但是不幸的是,我已经丢失了生成这些信号的代码。
有没有办法在这个图中提取每个信号的数据?我尝试了这个:
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');
但是我很困惑,我不知道这是否是正确的行动方式。谢谢!
一线解决您的问题:
data = get(findobj(open('ttc_delay1000.fig'), 'Type','line'), {'XData','YData'});
步骤在那里(从内部调用到外部调用):
data{n,1}
将包含XData
的的LineSeries
数量n
,欺骗了data{n,2}
将包含YData
的说LineSeries
。
如果要直接在图中平滑线条,则想法是相同的:
%//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');
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句