2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Обработка дискретного сигнала
Сообщение22.03.2010, 18:54 


22/03/10
18
Здравствуйте.

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

То есть была у нас непрерывная функция. После применения дискретизации сигнала с периодом дискретизации Т, мы получили массив данных $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 
Заслуженный участник


11/05/08
32166
kuku в сообщении #300947 писал(а):
Знаете ли вы какие-нибудь функции в Матлабе, которые могут найти максимумы функции дискретного сигнала?

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

 Профиль  
                  
 
 Re: Обработка дискретного сигнала
Сообщение23.03.2010, 12:41 


22/03/10
18
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 
Заслуженный участник


11/05/08
32166
Ну тупо пройдитесь в цикле. Типа:

Используется синтаксис 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 


22/03/10
18
ewert, спасибо за ответ.

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

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group