2015-01-21 14 views
0

저는 Matlab을 사용하여 ADC를 만들고 이해하려고 노력해 왔습니다. 나는이 작은 프로그램을 만들어 파형의 비트 수를 수정할 수있게했다. (2^8, 8은 비트 수, 1에서 64로 갈 수있다.) 그러나 컴퓨터에서 사운드를 재생할 때 사운드가 멈추는 것처럼 들릴 수 있습니다. 문제가 지속 되더라도 주파수를 변경할 수 있습니다. 내가 뭘 잘못했는지 궁금해?matlab에 DAC 오디오 신호 생성

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

몇 가지. 첫째, 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

+0

; 그러나 만약 당신이 플롯 한 신호를 연주한다면, OP의 제공 사운드에 가까운 어떤 종류의 이산적인 소리를들을 것입니다 .. – mehmet

+0

'sound (round (sin * 2 * pi * t * 440/1000) * 2^4)/2^4, 1000)'나를 위해 완벽하게 작동합니다. – jaket

+0

당신이 하나를 꾸몄다는 것을 의미합니다; 하지만 인간도 1Hz를들을 수 없다고 했으니 까. plot (round (sin (2 * pi * t * 440/1000) * 2^4)/2^4)'을 쓰면 어떨까요? 이것은 양자화 된 죄파처럼 보이지 않으므로, 우리가 듣는 소리는 실제로 양자화 된 죄입니까? – mehmet