我一直在尝试使用Matlab制作和理解ADC。我编写了这个小程序,可以修改波形的位数(2 ^ 8,8为位数,可以从1变为64)。但是,在计算机上播放声音时,听起来好像有什么声音停止了声音。可以更改频率,但是问题仍然存在。我想知道我做错了什么?
clf %clr screen
t = 0:1:1600
fs = 1000
senial = sin((2*pi*t)/fs)
quant=max(senial)/(2^8) % R/L = size of sep
y=round(senial/quant) % Quantizationto 2^N bit
signe=uint8((sign(y)'+1)/2) % transforms it to int 8 bit
out=[signe] % The first bit represents the sign of the number
sound(y,fs)
plot(y,'b');
最佳答案
有几件事。首先,您生成的正弦波仅为1Hz,因此您将永远无法听到它。
t = 0:1:1600
fs = 1000
freq = 440
senial = sin(2*pi*t*freq/fs)
play(senial, 1000)
下一个问题是量化问题。除了没有将数据重新归一化到-1到1范围外,几乎就在那里。您可能正在听剪辑。尝试这样的事情:
y = round(senial*2^8)/2^8
这是一个示例(为了使绘图更简单,再次输入了1Hz)
plot(round(sin(2*pi*t/1000)*2^4)/2^4)