在matlab中生成DAC音频信号

generating DAC audio signal in matlab

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