在matlab中生成DAC音频信号

时间:2015-01-21 08:45:36

标签: matlab audio signals sin adc

我一直在尝试使用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');

1 个答案:

答案 0 :(得分:1)

有几件事。首先,你产生一个只有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)

enter image description here