【发布时间】:2021-12-24 06:11:33
【问题描述】:
假设我有一个包含 44100 个样本的文件,采样频率为 fs=44100 Hz。 所以我的文件是 1 秒长。
我想将其下采样到 8 Hz 的采样频率,但我不想通过获取每个 44100/8 = 5512,5 个样本并保存在一个新数组中来做到这一点。但是通过取前 5512 个样本的平均值,保存新数组的位置 1。然后取样本 5513-11024 的平均值,并将其保存在新数组的位置 2 中。以此类推...并取样本 11025 到 11025+5512 并将其平均值放在数组的第 3 位。
我知道它必须是某种双重 for 循环,但我就是不知道如何...有什么帮助吗?
编辑:
以非常手动的方式执行我正在寻找的代码。
` fs=44100;
fo=8;
A = randn(44100,1); %array 在 fs=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;`
等等……
【问题讨论】:
-
单个for循环就足够了。试一试,我们会在看到一些代码后提供帮助