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

 
 
> изменить частоту дискретизации, matlab
Mad_max
сообщение Apr 20 2012, 09:56
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 377
Регистрация: 23-12-06
Из: Зеленоград
Пользователь №: 23 811



Подскажите правильно ли я еду...
Задача такова, создать в matlab испытательное воздействие, прогнать через модель, заново подтянуть в matlab и посмотреть результат.

Испытательное воздействие - синусоида оцифрованная 16кГц.
Код
>> fs = 16000;
>> t = 0:1/fs:1;
>> x = (0.5)*sin(2*pi*800*t);

Модель (не в matlab) - фильтр дециматор, коэффициенты которого посчитаны исходя из следующей спецификации, частота оцифровки 16кГц, частота среза 1кГц, коэффициент децимации 8.
Подтянув результат фильтрации обратно в matlab, вижу что синусоида "улетела" на 800*8 = 6.4кГц.
Я так понимаю, что надо matlab'у сообщить, что sample rate этих данных не 16кГц а 2кГц.
Попытка вида
Код
>> fs = 2000;
>> t = 0:1/fs:1;

результата не дает, только меняет шаг сетки.

Как все же решить эту проблему?

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
slash_spb
сообщение Apr 20 2012, 12:31
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 79
Регистрация: 20-03-06
Пользователь №: 15 425



Цитата(Mad_max @ Apr 20 2012, 13:56) *
Подскажите правильно ли я еду...
Задача такова, создать в matlab испытательное воздействие, прогнать через модель, заново подтянуть в matlab и посмотреть результат.

Испытательное воздействие - синусоида оцифрованная 16кГц.
Код
>> fs = 16000;
>> t = 0:1/fs:1;
>> x = (0.5)*sin(2*pi*800*t);

Модель (не в matlab) - фильтр дециматор, коэффициенты которого посчитаны исходя из следующей спецификации, частота оцифровки 16кГц, частота среза 1кГц, коэффициент децимации 8.
Подтянув результат фильтрации обратно в matlab, вижу что синусоида "улетела" на 800*8 = 6.4кГц.
Я так понимаю, что надо matlab'у сообщить, что sample rate этих данных не 16кГц а 2кГц.
Попытка вида
Код
>> fs = 2000;
>> t = 0:1/fs:1;

результата не дает, только меняет шаг сетки.

Как все же решить эту проблему?


А что вы хотите увидеть в итоге? Прикрепите пожалуйста файл с вернувшейся синусойдой.
Go to the top of the page
 
+Quote Post
Mad_max
сообщение Apr 20 2012, 13:05
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 377
Регистрация: 23-12-06
Из: Зеленоград
Пользователь №: 23 811



Цитата(slash_spb @ Apr 20 2012, 16:31) *
А что вы хотите увидеть в итоге? Прикрепите пожалуйста файл с вернувшейся синусойдой.

Ну вот тут вопрос, должен ли я увидеть ту же синусоиду или в модели надо ставить интерполятор и тогда уже в matlabe я получу ту же синусоиду.
Смущает то, что если сделать в matlab
Код
y = filter(a,1,x);

Синусоида не "улетает".

Файл смогу только в понедельник прикрепить.
Go to the top of the page
 
+Quote Post
slash_spb
сообщение Apr 20 2012, 14:20
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 79
Регистрация: 20-03-06
Пользователь №: 15 425



Цитата(Mad_max @ Apr 20 2012, 17:05) *
Ну вот тут вопрос, должен ли я увидеть ту же синусоиду или в модели надо ставить интерполятор и тогда уже в matlabe я получу ту же синусоиду.
Смущает то, что если сделать в matlab
Код
y = filter(a,1,x);

Синусоида не "улетает".

Файл смогу только в понедельник прикрепить.


Спектр до:

Код
fs = 16000;
t = 0:1/fs:1;
x = (0.5)*sin(2*pi*800*t);
plot([0:fs/(length(x)-1):fs],abs(fft(x)))



Спектр после децимации:
Код
x2 = x(1:8:end);
fs_dec = 2000;
plot([0:fs_dec/(length(x2)-1):fs_dec],abs(fft(x2)))


Частота синусойды не изменилась)

Сообщение отредактировал slash_spb - Apr 20 2012, 14:21
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 24th July 2025 - 12:54
Рейтинг@Mail.ru


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