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