реклама на сайте
подробности

 
 
> передискретизация, как?
TigerSHARC
сообщение Feb 22 2010, 16:22
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



Здравствуйте.
Есть сигнал:

Fs = 6400;
N = 128;
Ts = 1/Fs;
T = Ts*N;
f = 45;
t = 0:Ts:T-Ts;
A = 10;
Y = A*sin(2*pi*f*t)+ A*sin(2*pi*2*f*t)+ A*sin(2*pi*3*f*t);

как и какой функцией в MATLAB пересчитать частоту дискретизации с 6400 на 5760.
Причём с тем же числом отсчётов (128).

Это нужно для корректировки спектра сигнала.
Дело в том, что когда меняю частоту "руками":

Fs = 5760;
N = 128;
Ts = 1/Fs;
T = Ts*N;
f = 45;
t = 0:Ts:T-Ts;
A = 10;
df = Fs/N;
f1 = 0:df:Fs-(Fs/N);
Y = A*sin(2*pi*f*t)+ A*sin(2*pi*2*f*t)+ A*sin(2*pi*3*f*t);
X = fft(Y)/length(t);
>> stem(f1, abs(X)), grid

получается красивый спектр, отражающий верную информацию об амплитудах сигнала.
Пробовал для передискреизации функцию resample, но она выдаёт меньшее число отсчётов и спектр искажён...

да и вообще, не толкьо в MATLAB, как из 128 отсчётов получается 128 передискретизированных отсчётов... полюбому время выборки должно как-то варьироваться...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
leksa
сообщение Feb 24 2010, 20:25
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 41
Регистрация: 20-09-08
Пользователь №: 40 352



TigerSHARC
Извините, но мне все-таки не до конца ясны все условия вашей задачи, да и потом предлагать какие-то конкретные решения - их нужно проверять на практике применительно к вашей задаче, то есть сделать, а это время.
Но все же, вот какие моменты мне до сих пор не ясны -
1) Какой интервал наблюдения, за который вы должны получить оценку уровня сигнала?
2) Требуется оценить уровень первой гармоники, или еще какие-то параметры?
3) Какой период обновления полученных оценок? То есть через какой интервал времени нужно обновлять полученные оценки?
Если интервал наблюдения - это один период первой гармоники, то может быть делать так:
Предположим на вход алгоритма поступают отсчеты с частотой дискретизации 6400 Гц.
Алгоритм отслеживает переходы во входном сигнале через ноль, причем при переходе от отрицательного уровня к положительному, запускается накопление сигнала в некий буфер.
При следующем переходе через ноль от отрицательного уровня к положительному, накопление в буфер заканчивается.
На этот момент у вас в буфере 1 период синуса.
По числу накопленных отсчетов можно оценить частоту первой гармоники, правда довольно грубо так как погрешность оценки периода у вас +/- 1 отсчет. Может быть, оценку можно улучшить, если момент перехода через ноль уточнять линейной интерполяцией.
То есть у вас один отсчет был ниже нуля, следующий выше. Так как их уровни вам известны, то можно построить уравнение прямой линии через эти два отсчета и определить в какой момент линия пересекает нулевой уровень. Так нужно делать два раза в начале и конце периода. Потом период вычислите как разницу моментов перехода через ноль.
Теперь период сигнала известен. Вычисляем массив времени t=0:T1/N:(T1/N)*(N-1), где T1 - оценка периода первой гармоники, а N - размерность ДПФ, 128 например.
Используя этот массив времени и накопленный в буфере сигнал интерполятором получаем те N отсчетов одного периода, которые вам нужны для вычисления ДПФ, чтобы на интервал ДПФ попал точно 1 период.
По уровню первой гармоники ДПФ получаем искомую оценку уровня сигнала с частотой первой гармоники.
Сбрасываем содержание буфера и начинаем накопление заново, до нового перехода через ноль сигнала по направлению от отрицательных значений к положительным.
В таком варианте, оценка будет обновляться периодически, но не через 128 отсчетов входного сигнала, а через 1 период первой гармоники. Будет гармоника 45 Гц - будет реже обновляться, 52 Гц -чаще.
Данная схема чисто из головы, так что я не претендую на то что это наилучший способ.
Чтобы такое в матлабе набросать требуется время, а его мало.

Да, и при высоком уровне помех/искажений, моменты перехода через ноль будут "дрожать" слишком сильно, то есть оценка периода будет не точной, тогда и оценка уровня первой гармоники будет искажена. Как быстро может меняться частота первой гармоники? Если скажем на доли Гц в минуту, то тогда может быть все-таки накапливать побольше периодов, по переходам через ноль определять частоту первой гармоники. Такая оценка будет менее подвержена влиянию дрожания переходов через ноль.

Сообщение отредактировал leksa - Feb 24 2010, 20:46


--------------------
A designer knows he has achieved perfection not when there is nothing left to add, but when there is nothing left to take away (Antoine de Saint-Exupery)
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- TigerSHARC   передискретизация   Feb 22 2010, 16:22
- - Andron_   Цитатакак и какой функцией в MATLAB пересчитать ча...   Feb 22 2010, 16:59
|- - bahurin   Передискретизацию можно выполнить на основе интерп...   Feb 22 2010, 17:10
- - TigerSHARC   с точки зрения такой науки как численные методы во...   Feb 22 2010, 17:11
|- - bahurin   Цитата(TigerSHARC @ Feb 22 2010, 20:11) P...   Feb 22 2010, 17:16
|- - TigerSHARC   Цитата(bahurin @ Feb 22 2010, 20:16) В шт...   Feb 22 2010, 17:42
|- - bahurin   Цитата(TigerSHARC @ Feb 22 2010, 20:34) н...   Feb 22 2010, 17:42
- - Andron_   чтобы число отсчетов осталось тем же, нужна экстра...   Feb 22 2010, 17:19
- - TigerSHARC   тогда так. 1) при интерполяции всегда используется...   Feb 22 2010, 17:23
|- - bahurin   Цитата(TigerSHARC @ Feb 22 2010, 20:23) к...   Feb 22 2010, 17:33
|- - TigerSHARC   Цитата(bahurin @ Feb 22 2010, 20:33) Если...   Feb 22 2010, 18:00
||- - bahurin   Цитата(TigerSHARC @ Feb 22 2010, 21:00) Н...   Feb 22 2010, 18:07
||- - TigerSHARC   Цитата(bahurin @ Feb 22 2010, 21:07) став...   Feb 23 2010, 13:12
|- - megajohn   Цитата(bahurin @ Feb 22 2010, 21:33) Если...   May 30 2013, 13:04
- - Andron_   это что-то нереальное... сдайте дилера, я тоже хо...   Feb 23 2010, 16:38
- - TigerSHARC   Здаётся мне у меня какие-то принципиальные затрудн...   Feb 23 2010, 18:29
- - Andron_   вы не можете его "поджать" под временное...   Feb 23 2010, 18:49
|- - TigerSHARC   Цитата(Andron_ @ Feb 23 2010, 21:49) вы н...   Feb 23 2010, 18:58
- - Andron_   тью... "вон оно че, Михалыч"... тогда, ...   Feb 23 2010, 19:15
|- - TigerSHARC   Цитата(Andron_ @ Feb 23 2010, 22:15) тью....   Feb 23 2010, 19:40
- - leksa   Здравствуйте! Может быть вот такой вариант Вас...   Feb 23 2010, 21:07
- - TigerSHARC   на самом деле нужно просто передискретизировать си...   Feb 23 2010, 21:28
|- - leksa   Цитата(TigerSHARC @ Feb 24 2010, 00:28) н...   Feb 23 2010, 21:35
- - leksa   За код - пожалуйста, тем более это ваш код в общем...   Feb 23 2010, 22:41
- - Andron_   Цитатаresample не канает((( пример Fs = 6400; N ...   Feb 24 2010, 02:14
- - Andron_   только в коде нужно сначала передискретизацию сдел...   Feb 24 2010, 03:52
- - TigerSHARC   дело в том что нужно обеспечить отсутсвтие растека...   Feb 24 2010, 10:09
- - TigerSHARC   Или получилось из пустого в порожнее? по сути прос...   Feb 24 2010, 11:43
|- - SPACUM   Реализуется с помощью фарроу-фильтра. [/quote] А...   Feb 24 2010, 14:09
- - TigerSHARC   Да, то что у меня получилось выше просто вырезает ...   Feb 24 2010, 15:07
- - leksa   Я прочитал документ по ссылке. Из того что вы писа...   Feb 24 2010, 15:36
- - TigerSHARC   Уважаемый, leksa, если вы поняли суть алгоритма - ...   Feb 24 2010, 16:32
- - TigerSHARC   Уважаемый, leksa, если вы поняли суть алгоритма - ...   Feb 24 2010, 16:36
- - thermit   Дык, пауз во времени и не будет. Меняться будет чи...   Feb 24 2010, 16:40
|- - TigerSHARC   Цитата(thermit @ Feb 24 2010, 19:40) Дык,...   Feb 24 2010, 16:58
- - TigerSHARC   Вобщем, прошу подсказать как сделать адаптивное вр...   Feb 24 2010, 18:22
- - TigerSHARC   Всё теперь стало ясно. Объясняю суть проблемы. нео...   Feb 25 2010, 10:53
- - Andron_   ЦитатаПолучается что, какого бы размера не был буф...   Feb 25 2010, 11:52
- - thermit   ЦитатаTigerSHARC: уфер заполняется постоянно и цик...   Feb 25 2010, 12:09
- - TigerSHARC   ... а если делать так: брать данные из буфера и вы...   Feb 25 2010, 12:39
- - thermit   Если ориетироваться на число отсчетов связанное с ...   Feb 25 2010, 12:47
|- - TigerSHARC   Цитата(thermit @ Feb 25 2010, 15:47) Если...   Feb 25 2010, 12:54
- - thermit   ЦитатаТогда ждём пока не будет нужного количесвта ...   Feb 25 2010, 12:59
- - TigerSHARC   Подведём итог в теме. Предисркретизация осужествля...   Feb 25 2010, 19:17
- - Евгений Николаев   1. Время обработки всегда примерно одинаково, т.к....   Feb 26 2010, 15:37
- - TigerSHARC   Да, нужно ещё учесть что планируется хранение пред...   Feb 26 2010, 17:07
- - megajohn   хоть тема и древняя, но нужная всегда. В аттаче пр...   May 30 2013, 15:42


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th June 2025 - 11:04
Рейтинг@Mail.ru


Страница сгенерированна за 0.33765 секунд с 7
ELECTRONIX ©2004-2016