2014-11-08 4 views
1

У меня есть набор входных данных 32 баллов. Теперь я хочу преобразовать эти 32 баллов в 240 баллов путем усреднения данных по точкам.Увеличение точек данных в сигнале

Я думал о построении точек отсчета 32, которые у меня есть, а затем путем приблизительно графика кривой и получения данных с более высокой частотой дискретизации, чтобы получить 240 точек.

Я не могу понять, как это сделать в MATLAB. Я получил помощь от некоторых источников, но я не смог найти решение. Как это может быть сделано?

Короче говоря, я хочу преобразовать образцы «х» дискретных данных в «y» образцы новых данных, аппроксимируя сигнал. Здесь x > y или также x < y.

+0

'Здесь х> у, а также, х <у. что? Ваша проблема звучит как [интерполяция] (http://www.mathworks.com/help/matlab/interpolation-1.html) – Arpi

+0

@Arpi: Я просто имел в виду, что x может быть как больше, так и меньше y. –

ответ

2

resample делает то, что вы хотите,

newdata = resample(data,240,32); 

, например:

a = 1 : 32; 
b = resample(a,240,32); 
t = 1 : 32; 
t1 = linspace(1,32,240); 
plot(t,a);hold on;plot(t1,b,'r'); 

enter image description here

Шум в конце концов, это, вероятно, из-за резкого фильтра, 240/32 слишком высока.

resample делает на самом деле,

a = randi(10,[1 100]); 
b = resample(a,240,100); 
t = 1 : 100; 
t1 = linspace(1,100,240); 
plot(t,a);hold on;plot(t1,b,'r') 

enter image description here

+0

Большое спасибо. Функция, которую я искал так долго. :) И, к сожалению, у меня недостаточно репутации, чтобы поддержать свой ответ. –

+0

Один из лучших ответов, с которыми я столкнулся, спасибо :) –

+0

Ваш прием, удачи. – Rashid

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