移动纵向窗口(移动平均线?)

时间:2017-10-23 06:12:16

标签: matlab moving-average longitudinal

我有y和x的12个数据点:-180:30:179。在我绘制数据之后,它看起来像一个锯齿形图案而不是平滑的。为了使其平滑,我在30度(即+/- 15度)处应用移动的纵向窗口。如何一次向前移动一度,使纵向窗口像[-15,15],[ - 14,16],[ - 13,17],......一样变化?

到目前为止,这是我的代码

 %y=data %12datapoint 
 y=[90, 65, 60, 53, 70, 82, 65, 38, 44, 71, 77, 64];
 sum=0;                                                                    
 for x=-180:30:179
    for k=1:30
        sum=sum+y(x-15+k);
    end
    avg(x)=sum/30;
    sum=0;                                                                
  end

1 个答案:

答案 0 :(得分:0)

我可能会尝试在线之间阅读。但听起来你并不是真的要求移动平均线。这听起来像你想要你的" zig-zag"线条平滑或interpolated。如果这是正确的,你可以这样做:

y=[90, 65, 60, 53, 70, 82, 65, 38, 44, 71, 77, 64];
x = -180:30:179;

newX = -180:1:179; %Every degree
y_spline = interp1(x,y,-180:1:179,'spline');
y_pchip = interp1(x,y,-180:1:179,'pchip');

l(1) = plot(x,y,'Color',[0 0 1],'Marker','s');hold on
l(2) = plot(newX,y_spline,'r');
l(3) = plot(newX,y_pchip,'g');
grid on; legend(l,{'Orig','spline','pchip'});

Plot Example

选择插值方法......或者我可能会完全误读你的问题。