2015-01-21 9 views
0

Я пытался сделать и понять АЦП с использованием Matlab. Я сделал эту небольшую программу, которая позволяет мне изменять количество битов из формы волны (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

Несколько вещей. Во-первых, вы создаете синус, который составляет всего 1 Гц, поэтому вы никогда не сможете его услышать.

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

+0

Вы правы о том, что вы объяснить выше; но если вы сыграете сигнал, который вы построили, вы услышите какой-то дискретный звук, близкий к звуку, предоставленному OP. – mehmet

+0

'sound (round (sin (2 * pi * t * 440/1000) * 2^4)/2^4, 1000) 'отлично работает для меня. – jaket

+0

Я имею в виду, что вы построили один; но вы сказали, что человек не может слышать 1 Гц, так что все в порядке. Что делать, если вы замышляете это написание «графика (раунд (sin (2 * pi * t * 440/1000) * 2^4)/2^4)'. Это не похоже на квантованную волну sin, поэтому звук, который мы слышим, действительно является квантованным грехом? – mehmet