2013-02-15 1078 views
-1

我有一个数据序列。所以我想绘制由于窗口长度滑动窗口内的数据。 请帮助我。如何在matlab上创建信号滑动窗口

其实数据来自帧的均值和方差。所以我想绘制滑动窗口内的均值和方差。另外我不能在Matlab上创建滑动窗口。

+0

是你的信号1D还是2D? – bla 2013-02-15 08:17:48

+0

1D平均值和方差来自图像帧,所以我一个接一个地绘制, – Binja 2013-02-15 08:20:53

+0

术语滑动窗口是误导性的,而OP只想显示\处理他已有的部分数据,即不需要计算。 – bla 2013-02-15 09:00:53

回答

1

所以,如果我正确理解你,你想改变x轴限制的情节。使用xlim的,例如:

a=1:10; 
plot(a) 
xmin = 5; 
xmax = 7.6; 
xlim([xmin xmax]) 

,或者如果你想有一个固定的大小,你可以xlim([xmin xmin+window])等等

+0

它没有任何意义, – Binja 2013-02-15 08:23:44

+0

我想你错了我的问题。 我有均值和方差值。我只是想在滑动窗口内绘制它们 – Binja 2013-02-15 08:27:14

+0

所以我不明白这个问题,什么是“滑动窗口”,为什么你不能“绘制”你所拥有的数据?你可以添加一个例子吗? – bla 2013-02-15 08:28:43

2

我的做法将是一个窗口,

a = randi(100,[1,50]); % My sequence 
win_width = 10; %Sliding window width 
slide_incr = 1; %Slide for each iteration 
numstps = (length(a)-win_width)/slide_incr; %Number of windows 
for i = 1:numstps 
    mean_win(i) = mean(a(i:i+win_width)); %Calculation for each window 
end 
plot(mean_win) 

有可能做更好的方法..

+1

仅供参考,您可以通过'mean_win = conv(a,ones(1,win_width)/ win_width)计算没有循环的平均值,但这不是OP想要的(请参阅其他答案的评论) – bla 2013-02-15 09:16:37

+0

对于我所检查的,numstps应该加1,for循环中的win_width应该减1。有人可以确认吗? – 2013-08-28 15:08:57

1

这就是我一直这样做(从2滑动窗口代码改编)。你可以计算出你想要的平均值和方差。

T = 25;     % Window Size 
K = size(data,1) - T; % Number of repetitions 

for i = 1:K  
    window = data(i:i+T-1,:); 

    % Mean and Variance Calculations here 
    % Plotting here 
    % call 'drawnow' for incremental plotting (animation) 
end