Допустим, у меня есть файл с 44100 образцами, сэмплированный при fs = 44100 Гц. Так что мой файл длится 1 секунда.Даунсэмпл путем вычисления среднего значения в MATLAB
Я хочу уменьшить эту частоту до 8 Гц, но я хочу сделать это НЕ, взяв каждый образец 44100/8 = 5512,5 и сохранить в новом массиве. Но, взяв среднее значение первых 5512 выборок, сохраните на месте 1 нового массива. Затем возьмите образец 5513-11024, среднее значение этого и сохраните на месте 2 нового массива. И так далее ... И возьмите образец 11025 до 11025 + 5512 и поставьте среднее значение этого на место 3 массива.
Я знаю, что это должен быть какой-то двойной цикл, но я просто не могу понять, как ... Любая помощь?
EDIT:
Код, который в очень ручном способе делает то, что я ищу.
`fs = 44100;
fo = 8;
A = randn (44100,1); % Массива проб при фс = 44100 со случайными данными
A_resampled = zeros(numel(A)/5512);
first_block = zeros(5512,1);
for i = 1:length(first_block)
first_block(i) = A(i);
end
first_mean_value = mean(first_block);
A_resampled(1) = first_mean_value;
second_block = zeros(5512,1);
for k = 5513:5512+length(second_block)
second_block(k) = A(k);
end
second_mean_value = mean(second_block);
A_resampled(2) = second_mean_value;`
и так далее ...
Одиночный цикл достаточно. попробуй, и мы поможем, когда увидим какой-то код. –