⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pcm testing.m

📁 本程序是关于脉冲编码调制PCM的一个测试软件很好的
💻 M
字号:
% Removing all variables, functions, and MEX-files from memory, leaving the
% workspace empty.
clear all


% Deleting all figures whose handles are not hidden.
close all


% Deleting all figures including those with hidden handles.
close all hidden


% Clearing all input and output from the Command Window display giving us a clean screen.
clc


% Opening the file 'TEOTH.mp3' in the read access mode.
fid = fopen ('TEOTH.mp3','r');


% Generating the input signal 'm(t)' by reading the binary data in 16 bit
% integer format from the specified file and writing it into a matrix
% 'm(t)'.
m = fread (fid,'int16');


% Defining the count for efficiency.
count = 8500;


% Calculating maximum value of the input signal 'm(t)'.
Mp = max (m)


% Setting number of bits in a symbol.
bits = 8;


% Defining the number of levels of uniform quantization.
levels = 2^bits;


% Calculating the step size of the quantization.
step_size = (2*Mp)/levels


% Setting the sampling frequency.
% because the audio signal has a maximum frequency of 4K and according to
% Nyquist criteria, we get the following sampling frequency.
Fs = 8000;


% Setting the sampling instant.
Ts = 1;


% Setting the number of samples to be used.
No_Samples = (2*Fs)+Ts;


% Define the time vector for the calculations.
time = [1:Fs/64];


% Calculating the bit rate.
bit_rate = 8000*bits;


% Quantizing the input signal 'm(t)'.
for k = 1:No_Samples,
    samp_in(k) = m(k*Ts);
    quant_in(k) = samp_in(k)/step_size;
    error(k) = (samp_in(k) - quant_in(k))/No_Samples;
end


% Indicating the sign of the input signal 'm(t)' and calculating the
% quantized signal 'quant_out'.
signS = sign (m);
quant_out = quant_in;
for i = 1:count,
    S(i) = abs (quant_in(i)) + 0.5;
    quant_out(i) = signS(i)*round(S(i))*step_size;
end


% Calculating the quantization noise 'Nq'.
Nq = ((Mp)^2)/(3*((levels)^2))


% Calculating signal to noise ratio 'SNR'.
SNR = 1.5*((levels)^2)
Gms = log10(SNR)


% Plotting the input signal 'm(t)'.
%figure;
subplot(4,1,1);
plot(time,m(time));
title('Message Signal');
xlabel('Time');
ylabel('m(t)');
grid on;


% Plotting the quantized signal 'quant_in(t)'.
%figure;
subplot(4,1,2);
stem(time,quant_in(time),'r');
title('Quantized Speech Signal');
xlabel('Time');
ylabel('Levels');
grid on;


% Plotting the PCM signal 's_out(t)'.
%figure;
subplot(4,1,3);
plot(time,quant_out(time));
title('PCM Speech Signal');
xlabel('Time');
ylabel('PC Signal');
grid on;


% Plotting the error signal 'error(t)'.
subplot(4,1,4);
plot(time,error(time));
title('Error Signal');
xlabel('Time');
ylabel('Error(t)');
grid on;


% Removing all variables, functions, and MEX-files from memory, leaving the
% workspace empty.
clear all

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -