2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Обработка дискретного сигнала
Сообщение22.03.2010, 18:54 
Здравствуйте.

Знаете ли вы какие-нибудь функции в Матлабе, которые могут найти максимумы функции дискретного сигнала?

То есть была у нас непрерывная функция. После применения дискретизации сигнала с периодом дискретизации Т, мы получили массив данных $y_i = f(x_i), i = 0,1,...,n$
$$y_0 , y_1 ,... ,y_n$$
$$x_0 , x_1, ... ,x_n$$
Используя только этот массив данных, нужно определить максимумы функции $y = f(x)$.

 
 
 
 Re: Обработка дискретного сигнала
Сообщение22.03.2010, 22:49 
kuku в сообщении #300947 писал(а):
Знаете ли вы какие-нибудь функции в Матлабе, которые могут найти максимумы функции дискретного сигнала?

Раз сигнал уж дискретизирован, то применяем к нему функцию max. Да и при чём тут Matlab, собственно -- это всюду так.

 
 
 
 Re: Обработка дискретного сигнала
Сообщение23.03.2010, 12:41 
ewert, мне нужно реализовать данную функцию именно в Матлаб.

То есть я бы хотел ввести массив данных в функцию Матлаба и получить, допустим, значения индексов массива, где находятся максимумы функции y=f(x). Главный максимум меня не интересует.

К примеру:

[maxA] = getmaxfun(y,x)
\\y = y0, y1, ..., yn
\\x = x0, x1, ...,xn
Получаем массив данных maxA:
maxA(1) = 1
maxA(2) = 10
maxA(3) = 17

То есть точки
y1, y10, y17
x1, x10, x17
содержат максимумы функции y = f(x).

Я искал в интернете, но такую функцию для Матлаба я не смог найти. Может вы знаете? Или что-то похожее, не обязательно как в примере.

 
 
 
 Re: Обработка дискретного сигнала
Сообщение24.03.2010, 11:48 
Ну тупо пройдитесь в цикле. Типа:

Используется синтаксис Matlab M
function ii=maxindex(y)
%  Возвращает индексы локальных максимумов

n=length(y);
if y(1)>=y(2),   ii=1;   else,   ii=[];   end;

for k=2:n-1
    if (y(k)>=y(k-1)) & (y(k)>=y(k+1)),   ii=[ii, k];   end
end

if y(n)>=y(n-1),   ii=[ii, n];   end;

Или для оптимизации можно попытаться поиграться сравнением сдвинутых массивов, но лень думать, да и в последних версиях Матлаба оператор цикла, наверное, уже достаточно оптимизирован.

А готовой функции мне не попадалось.

 
 
 
 Re: Обработка дискретного сигнала
Сообщение24.03.2010, 13:06 
ewert, спасибо за ответ.

Но я уже написал программу. Позже выложу.

 
 
 [ Сообщений: 5 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group