2015-01-08 2 views
5

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

Его довольно простые данные о снижении частоты в Matlab с использованием функции Matlab downsample.

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.5s.

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

Я написал цикл for для простого/меньшего вектора, чтобы увидеть, могу ли я это сделать. Для A = [1 2 3 4] Я хотел бы сконденсировать данные так, чтобы А имел только 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 записи, а затем усреднил их. скоро.

Может ли кто-нибудь помочь?

Благодаря

+0

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

+1

Да, вы объяснили довольно подробно, почему вы хотите достичь, чего вы хотите достичь. Возможного дубликата не было даже в связанных темах, я только что вспомнил об этом. Не волнуйся, все еще хороший вопрос. – Nras

ответ

4

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

A = [1 2 3 4]; %// data 
n = 2; %// averaging size 
P = mean(reshape(A,n,[])); 
+0

Спасибо, это работает! –

Смежные вопросы