2013-02-15 3 views
-1

У меня есть последовательность данных. Поэтому я хочу построить эти данные в скользящих окнах из-за длины окна. Помогите мне пожалуйста.Как создать скользящее окно над сигналом на matlab

Фактически данные относятся к среднему значению и дисперсии кадров. Поэтому я хочу запечатлеть это среднее значение и дисперсию внутри скользящих окон. Также я не могу создавать скользящие окна на Matlab.

+0

Ваш сигнал 1D или 2D? – bla

+0

1D среднее значение и отклонение от кадра изображения. Поэтому я рисую один за другим, – Binja

+0

термин «скользящее окно» вводит в заблуждение, вместо этого OP хочет только отображать \ обрабатывать часть данных, которые он уже имеет, т. Е. Никаких вычислений не требуется. – bla

ответ

1

Итак, если вы правильно поняли, что хотите изменить пределы по оси x участка. Используйте xlim для этого, например:

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

или если вы хотите окно постоянного размера вы можете xlim([xmin xmin+window]) и т.д ...

+0

Это не имеет смысла, – Binja

+0

Я думаю, что у меня возникли неправильные вопросы. У меня есть значения и значения дисперсии. Я просто хочу построить их внутри скользящих окон. – Binja

+0

Так что я не понимаю вопроса, что такое «скользящее окно», и почему вы не можете просто «заговорить» данные у вас? можете ли вы добавить пример, может быть? – bla

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

FYI вы можете вычислить среднее значение без цикла только с помощью 'mean_win = conv (a, ones (1, win_width)/win_width)', но это не то, что хотел OP (см. комментарии другого ответа) – bla

+0

Для того, что я проверил, numstps следует добавить одним, а win_width в цикле for должно быть уменьшено на единицу. Может кто-нибудь подтвердить? –

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 
Смежные вопросы