У меня есть 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 записи, а затем усреднил их. скоро.
Кто-нибудь может помочь?
Спасибо