Do analógico ao digital: simulação de sinal

Você já se perguntou como suas músicas, chamadas de voz ou até fluxos de vídeo viajam do mundo físico para os dispositivos digitais que usamos todos os dias? A resposta está no processamento de sinal da arte de converter um sinal analógico em um digital. Nesta postagem, eu o guiarei por uma simulação simples do MATLAB, onde gero uma onda senoidal analógica, provei, quantize -a e finalmente a codificam em forma binária. No final, você verá como um sinal analógico se transforma passo a passo em um fluxo digital. 1. Gerando um sinal analógico, vamos começar com uma onda senoidal simples de 100 Hz. Como o MATLAB não lida com sinais “contínuos”, eu o aproximo com uma etapa de tempo muito bom: t = 0: 0,0001: 0,01; % Etapa muito fina (tempo contínuo) f = 100; % frequência = 100 Hz x_analog = sin (2*pi*f*t); plot (t, x_analog, ‘linewidth’, 1.5); title (‘sinal analógico (onda senoidal)’); Digite o modo de saída do modo de tela cheia, isso me dá a curva suave – meu sinal de referência. 2. Amostragem De acordo com o teorema do NYQUIST, preciso amostrar pelo menos o dobro da frequência do sinal (≥ 200 Hz). Testei três casos: 150 Hz (abaixo do nyquist) → Aliasing e distorção 200 Hz (nyquist) → Captura mínima, irregular 500 Hz (acima de Nyquist) → Amostragem limpa, mais próxima de Fs analógica = 500; % tente 150, 200 e 500 ts = 1/fs; n = 0: ts: 0,01; x_sampled = sin (2*pi*f*n); haste (n, x_sampled, ‘preenchido’); título([‘Sampled Signal at Fs=” num2str(Fs) ” Hz’]); Digite o modo de saída de tela cheia de tela cheia 3. Quantização em seguida, mapeio os valores amostrados para níveis discretos de amplitude. O uso de mais bits aumenta o número de níveis: 8 bits → 256 níveis 16 bits → 65.536 níveis 64 bits → bits praticamente contínuos = 8; % tente 8, 16 e 64 níveis = 2^bits; x_min = min (x_sampled); x_max = max (x_sampled); q_step = (x_max – x_min)/níveis; x_index = redonda ((x_sampled – x_min)/q_step); x_quantized = x_index*q_step + x_min; haste (n, x_quantized, ‘preenchido’); título([‘Quantized Signal (‘ num2str(bits) ‘-bit)’]); Digite o modo de saída do modo de tela cheia com menos bits, você pode ver claramente as distorções da escada. À medida que eu aumenta os bits, o sinal quantizado se torna quase idêntico ao amostrado. 4. Finalmente, cada valor quantizado é representado como uma palavra binária. Por exemplo, com 8 bits, cada amostra se torna um código binário de 8 bits. binary_codes = DEC2BIN (x_index, bits); disp (binary_codes (1:10, :)); % First First 10 Codes Digite o modo de saída de tela cheia de tela cheia quando concatenada, formam um BitStream digital – o formato que os computadores e os sistemas de comunicação amam. Pontos se você amostrar abaixo do NYQUIST, corre o risco de perder informações (aliasing). O aumento da taxa de amostragem melhora a qualidade do sinal, mas custa mais dados. Mais bits de quantização reduzem a distorção, mas aumentam o armazenamento e a largura de banda. No final, sua onda analógica “suave” se torna uma sequência longa de 1s e 0s. Você pode tentar experimentar diferentes frequências e profundidades de bits em seu próprio código. É a melhor maneira de ver como os sinais analógicos se tornam digitais e apreciar o equilíbrio entre precisão e eficiência nos sistemas do mundo real.

Fonte

Você pode ter perdido