Понижающая выборка данных в Matlab путем усреднения [дубликата]

У меня есть 2 набора данных в Matlab, которые мне нужно построить друг против друга - один по оси x и один по оси y. Данные для каждого набора были собраны с использованием другого метода, поэтому частота дискретизации значительно отличается, и пока я не получу одинаковое количество точек данных в обоих наборах, я не могу построить график друг против друга.

Довольно просто понизить выборку данных в Matlab, используя функцию downsample Matlab.

A = [-3 -1.5 0 1.5 3 4.5 6 7.5 9...] (goes on until 21) 
B = [-3.9 -3.8 -3.7 -3.6 -3.5 -3.5 -3.3 -3.2 -3.1 -3.0 -2.9 -2.8...] (goes on until 22) 

Частота дискретизации A составляет 1,5 с, а частота дискретизации B — 0,1 с. Мне удалось успешно использовать downsample как downsample(B,15,10), чтобы запустить его одновременно с "-3s" (что означает что-то в моих данных, поэтому мне нужно, чтобы он запускался в этот момент) и иметь частоту дискретизации выборки 1,5 с.

Теперь, однако, мне было интересно, существует ли метод, который позволял бы мне взять среднее значение из 15 точек вместо того, чтобы выбирать одну точку через каждые 15 точек? downsample, то, как я его использовал, просто выбирает каждую 15-ю точку. Я, однако, хотел бы, чтобы вместо этого он набрал для меня в среднем 15 баллов. Есть ли способ сделать это?

Я написал цикл for для простого/меньшего вектора, чтобы посмотреть, смогу ли я это сделать. Для A = [1 2 3 4] я хотел бы сжать данные так, чтобы у A было только 2 записи, так что он усредняет A (1) и A (2), а затем A (3) и A (4).

A = [1 2 3 4] 
for i = 1:3
  P(i) = mean(A(i:i+1))
end 

Это, однако, не работает так, как я хочу, потому что я не хочу, чтобы оно усредняло A(2) и A(3). Я хочу, чтобы он взял первые 2 записи, усреднил их, затем следующие 2 записи, а затем усреднил их. скоро.

Кто-нибудь может помочь?

Спасибо


person Maheen Siddiqui    schedule 08.01.2015    source источник
comment
Ааа, да.. Извините... Я пытался найти существующие ответы на вопросы. Я думаю, что мои поисковые слова отличались от названия.   -  person Maheen Siddiqui    schedule 08.01.2015
comment
Да, вы довольно подробно объяснили, почему вы хотите достичь, чего вы хотите достичь. Возможного дубликата даже не было в соответствующих темах, я его просто вспомнил. Не волнуйтесь, все еще хороший вопрос.   -  person Nras    schedule 08.01.2015


Ответы (1)


Преобразуйте свои данные A в матрицу из n строк, где n – размер усреднения, и примените mean для вычисления среднего значения каждого столбца:

A = [1 2 3 4]; %// data
n = 2; %// averaging size
P = mean(reshape(A,n,[]));
person Luis Mendo    schedule 08.01.2015