gpt4 book ai didi

matlab - 如何防止高频(泛音)的产生

转载 作者:行者123 更新时间:2023-12-02 03:31:03 25 4
gpt4 key购买 nike

enter image description here

Fs =44100;    
toneFreq1 = 8000;
nSeconds = 25;
f1 = sin(linspace(0, nSeconds*toneFreq1*2*pi, round(nSeconds*Fs)));
toneFreq2 = 8100;
nSeconds = 25;
f2 = sin(linspace(0, nSeconds*toneFreq2*2*pi, round(nSeconds*Fs)));
....

toneFreq80 = 15900;
nSeconds = 25;
f80 = sin(linspace(0, nSeconds*toneFreq80*2*pi, round(nSeconds*Fs)));
toneFreq81 = 16000;
nSeconds = 25;
f81 = sin(linspace(0, nSeconds*toneFreq81*2*pi, round(nSeconds*Fs)));


f_12345678910...= [f1+f2+f3+f4+f5+f6+f7+f8+f9+f10...f81]/81;


f_z=[f_12345678910...];
sound(f_z,Fs)
wavwrite(f_z, Fs, 24, '8_16zKHz.wav');

我创建了一个波形文件(使用 Matlab 包含从 8khz 到 16khz 的频率)。然后我播放波形并使用 M50 麦克风(扬声器上方 6 厘米)和录音机录制声音(来自扬声器)。最后,我用matlab程序把声音转换成图形。在此图中,您可以看到一个 8-16khz 平台(我想要的),还可以看到一些高频分量(箭头)。我不知道为什么会产生高频(> 16khz)。高频信号是在扬声器中产生的,还是麦克风产生的噪音?谢谢。

最佳答案

我认为您的问题出在 linspace 的使用上。从表面上看,它似乎应该可以工作,但您调用它的方式有些不妥。我认为您的方法并没有以完全正确的采样率结束。

此外,我对 Matlab 以普遍可识别的格式导出 24 位 WAV 的能力没有什么经验。我认为您应该首先尝试 16 位,因为这对我来说非常可靠。

因此,作为尝试,我将以这种方式重写您的代码:

%define my parameters
toneFreqs = [8000:100:16000];
fs = 44100;
nSeconds = 25;

%create my data
t_sec = ([1:(nSeconds*fs)]-1)/fs; %here is the time for each sample
t_sec = t_sec(:); %make a column instead of a row
myWav = zeros(size(t_sec)); %pre-allocate the output
for Ifreq = 1:length(toneFreqs) %loop over each frequency
myWav = myWav + sin(2*pi*toneFreqs(Ifreq)*t_sec);
end

%save to WAV file
myWav = myWav./max(abs(myWav)); %normalize amplitude to 1.0
wavwrite(myWav,fs,16,'myWav.wav'); %save as 16 bit

关于matlab - 如何防止高频(泛音)的产生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26730763/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com