7 / 1 / 1
Регистрация: 01.10.2012
Сообщений: 115
|
|
1 | |
Изменение частоты дискретизации wav01.04.2019, 05:32. Показов 5041. Ответов 7
Метки нет Все метки)
(
Здравствуйте. Имею wav файл, функцией [y,Fs] = audioread(filename) считываю его.
Вопрос, как можно поменять частоту дискретизации Fs чтобы у меня количество отчетов y уменьшилось? я же правильно понимаю что массив y зависит от Fs? Или придется перекодировать сам wav файл?
0
|
|
01.04.2019, 05:32 | |
Ответы с готовыми решениями:
7
Быстрое изменение частоты дискретизации имеющегося звука онлайн Увеличение частоты дискретизации Вывод в RichEdit шаг Дискретизации от *.wav |
553 / 403 / 111
Регистрация: 31.10.2016
Сообщений: 3,477
|
|
01.04.2019, 10:48 | 2 |
Fs это возвращаемое значение функции, оно определяется файлом, который Вы загружаете. Изменить его непосредственно нельзя. Можно только записать новый файл с требуемой Fs, а потом его прочитать. У функции audioread есть дополнительные опции, они позволяют загружать определённый фрагмент файла и задавать формат загружаемых данных (можно выбрать целый или double). Такого, чтобы загружать данные с отличающейся от оригинальной Fs в ней не предусмотрено. И это не случайно, так как перед прореживанием сигнала, во избежание искажений, требуется низкочастотная фильтрация. Оптимальный ФНЧ зависит от особенностей сигнала, поэтому лучше его разработать самостоятельно. Если же требуемая Fs не кратна исходной, то там будет необходима более сложная процедура. Если уж всё равно сигнал загружается в Matlab, то наверное, всю необходимую обработку рациональнее сделать в этом же пакете.
0
|
1277 / 909 / 445
Регистрация: 21.10.2012
Сообщений: 2,581
|
|
01.04.2019, 10:51 | 3 |
Можете написать что-то вроде: y = y(1:2:end), тем самым понизите частоту дискретизации в 2 раза (конкретно для этого случая). Главное, наверное, смотреть, чтобы спектры не наложились друг на друга.
0
|
7 / 1 / 1
Регистрация: 01.10.2012
Сообщений: 115
|
|
01.04.2019, 12:47 [ТС] | 4 |
Вот у меня щас аудио с белым шумом длительностью 1 мин, пройдя через ф-цию [y,Fs] = audioread(filename), я получаю около 2млн значений y.
Данных значений очень много, у меня памяти в МК не хватит, т.к массив y я хочу подать на МК где есть функция fft. Ну и плюсом проверить fft в matlab-e. Сравнить результат. Как бы мне быть в данном случае
0
|
553 / 403 / 111
Регистрация: 31.10.2016
Сообщений: 3,477
|
||||||
01.04.2019, 13:02 | 5 | |||||
Вот так можно загрузить первую тысячу сэмплов файла
0
|
164 / 134 / 61
Регистрация: 16.05.2015
Сообщений: 372
|
|
01.04.2019, 16:34 | 6 |
![]() Решение
А почему бы, после считывания, не использовать для понижения частоты дискретизации функцию dacimate?
http://matlab.exponenta.ru/sig... cimate.php
1
|
7 / 1 / 1
Регистрация: 01.10.2012
Сообщений: 115
|
|
04.04.2019, 09:11 [ТС] | 7 |
да, похоже y = decimate(x,r) то что нужно,
правильно ли я понимаю, когда я считываю файл [y,Fs] = audioread(filename) у меня появляется массив y и Fs после применения p = decimate(y,r), к примеру r будет 20, значит Fs уменьшится в 20 раз?
0
|
164 / 134 / 61
Регистрация: 16.05.2015
Сообщений: 372
|
|
04.04.2019, 09:20 | 8 |
![]() Решение
Именно так.
Но обратите внимание на следующее. В хелпе сказано, что если значение параметра r больше 13, то стоит разложит это значение на сомножители и применить функцию decimate несколько раз.
0
|
04.04.2019, 09:20 | |
Помогаю со студенческими работами здесь
8
Порядок фильтра от частоты дискретизации Вывод по изменению частоты дискретизации Необходима реализация изменения частоты дискретизации на С++ Зависимость коэффициентов фильтра от частоты дискретизации Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |