Форум программистов, компьютерный форум, киберфорум
Matlab
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/15: Рейтинг темы: голосов - 15, средняя оценка - 4.93
1 / 1 / 0
Регистрация: 19.04.2013
Сообщений: 93

Передескретизация resample

23.12.2013, 11:59. Показов 3215. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В матлабе реализовал передескретизацию функцией resample, все работает отлично, но мне нужно реализовать подобный алгоритм в программном коде. Может кто поможет с алгоритмом функции resample? Заранее спасибо
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.12.2013, 11:59
Ответы с готовыми решениями:

Ffmpeg. Изменения частоты дискретизации (resample) у wav файла с 44 100 Гц до 8000 Гц
Кто то сталкивался с задачей изменения частоты дискретизации при помощи Fffmpeg через wrapper библиотек? не могу найти примера этой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
23.12.2013, 12:18
недавно довелось столкнуться. Код не сильно "матлабовский" по стилю, так как был написан с целью перевода на язык си.
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
% function y = resampler(x, p, q)
close all; clear all; clc;
 
% yt = load('D:\test\_\tst_rsmpl_polyphase\out.txt');
% plot(yt); grid;
 
x = cos(2*pi*10*(0:1000)/1000) + 1i*sin(2*pi*10*(0:1000)/1000);
p = 3; q = 5;
 
% const
taps = 10;
beta = 5;
% stride = 1;
 
if p==1 && q==1
    y = x;
    return;
end
 
cd = gcd(p, q);
up = p / cd;
down = q / cd;
pqmax = max(up, down);
 
L = 2*taps*pqmax + 1;
% fc = 1/pqmax;
% h = up * firls(L-1, [0 fc fc 1], [1 1 0 0]) .* kaiser(L, beta)';
scale = min(1, up/down);
fc = min(1/up, 1/down)/2;
xx = 2*pi*fc*((0:L-1) - fix((L-1)/2));
h = zeros(1, L);
for i = 1:length(xx)
    if xx(i)==0
        h(i) = 1;
    else
        h(i) = sin(xx(i))/xx(i);
    end
end
h = scale * h .* kaiser(L, beta)';
 
Lhalf = (L-1)/2;
nz = floor(down - mod(Lhalf, down));
z = zeros(1, nz);
h = [z h(:).'];  % ensure that h is a row vector.
Lhalf = Lhalf + nz;
delay = floor(ceil(Lhalf)/down);
% Need to zero-pad so output length is exactly ceil(Lx*p/q).
nz1 = 0;
while ceil(((length(x)-1)*up+length(h)+nz1)/down)-delay < ceil(length(x)*up/down)
    nz1 = nz1+1;
end
h = [h zeros(1,nz1)];
 
%
% y = upfirdn(x, h, up, down);
 
% outLen = fix(length(x) * up / down);
% y = zeros(1, outLen);
% tapsDiv2 = taps / 2;
 
% for idx=0:outLen-1
%     j = fix(idx * down / up);
%     tmp1 = fix(mod(idx*down, up)) + fix((L + 1)/2) - 1;
%     tmp2 = fix((j + 1) * stride);
%     tmp = 0;
%     for k = -tapsDiv2:tapsDiv2-1
%         kx = tmp2 - k*stride;
%         if kx<0; kx = length(x)+kx; end
%         hpos = k * up + tmp1;
%         tmp = tmp + h(1+hpos) * x(1+mod(kx, length(x)));
%     end
%     y(idx+1) = tmp;
% end
 
%
L = length(h);
Mp = fix(L / up);
s = [zeros(1,Mp-1) x zeros(1,Mp)];
y = zeros(1,fix((length(x)+Mp-1)*up/down)+1);
ll = 1;
n = 1;
for i = 1 : length(x)+Mp-1
    for k = 1:up
        if mod(ll+down-1,down) == 0
            sm_tmp = 0;
            for m = 1 : Mp
                sm_tmp = sm_tmp + h((m-1)*up+k) * s(i+Mp-m);
            end
            y(n) = sm_tmp;
            n = n + 1;
        end
        ll = ll + 1;
    end
end
%
 
y(1:delay) = [];
y(ceil(length(x)*p/q)+1:end) = [];
 
figure; plot(real(x)); hold on; plot(real(y),'r'); grid;
1
1 / 1 / 0
Регистрация: 19.04.2013
Сообщений: 93
23.12.2013, 12:25  [ТС]
Огромнейшее спасибо). На всякий случай спрашиваю - есть ли к этому коду какие-нибудь пояснения? Или что-то подобное, чтобы облегчить его разбор.
0
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
23.12.2013, 12:30
Используется полифазный алгоритм. Хорошо описан в книге Айфичер, "Цифровая обработка сигналов. Практический подход". По этому описанию код и был написан
1
1 / 1 / 0
Регистрация: 19.04.2013
Сообщений: 93
23.12.2013, 12:53  [ТС]
"Преобразование частоты дискретизации с использованием многофазного фильтра" - эта тема? Именно полифазного алгоритма я не нашел
0
2014 / 1286 / 61
Регистрация: 05.06.2010
Сообщений: 2,213
23.12.2013, 12:55
вся 9-я глава
1
1 / 1 / 0
Регистрация: 19.04.2013
Сообщений: 93
23.12.2013, 12:57  [ТС]
Фух... ну приступим к изучению). Спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru