Implementación de Cuantificación y Codificación PCM en MATLAB
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en
español con un tamaño de 2,46 KB
Práctica 3
Procesamiento y Cuantificación de Señales
Cuantificador
function k = cu(x,xmin,xmax,R)
M = 2^R;
Dlt = (xmax-xmin)/M;
k = floor((x-xmin)/Dlt);
ksn = k<0;
ksp = k>M-1;
kss = not(or(ksn,ksp));
k = uint32( 0*ksn + (M-1)*ksp + k.*kss );
endDecuantificador
function y = du(k,xmin,xmax,R)
M = 2^R;
Dlt = (xmax-xmin)/M;
y = (double(k)+0.5) * Dlt + xmin;
endPrograma para Analizar la Distorsión de CU
[x,fs] = audioread('vt1.wav'); % Lee la secuencia del fichero WAVE
k = cu(x,-1,1,6); % Cuantifica la secuencia x
y = du(k,-1,1,6); % Decuantifica los índices k
sound(y,fs); % Reproduce la secuencia decuantificadaCodificación y Decodificación PCM
CodPCM
function f = codPCM(x,R,fi)
N = length(x);
fid = fopen(fi,'w'); % Abre fichero en modo escritura
count = fwrite(fid,R,'ubit4'); % Escribe R en el fichero.
count = fwrite(fid,N,'ubit32'); % Escribe N en el fichero.
k = cu(x,-1,1,R); % Cuantifica la secuencia x
dt = ['ubit' num2str(R)]; % Crea cadena de caracteres.
count = fwrite(fid, k ,dt ); % Escribe k en el fichero.
fclose(fid); % Cierra el fichero.
endDecodPCM
function [y] = decPCM(fi)
fid = fopen(fi,'r'); % Abre fichero en modo lectura
R = fread(fid,1,'ubit4'); % Lee R en el fichero.
N = fread(fid,1,'ubit32'); % Lee N en el fichero.
dt = ['ubit' num2str(R)]; % Crea cadena de caracteres.
k = fread(fid,N,dt ); % Lee k en el fichero.
fclose(fid); % Cierra el fichero.
y = du(k,-1,1,R); % Decuantifica la secuencia k
endProcesamiento de Imágenes
CodIm
function CodIm(x,fi,R)
[f, c] = size(x);
fid = fopen(fi,'w');
fwrite(fid,R,'ubit3');
fwrite(fid,f,'ubit16');
fwrite(fid,c,'ubit16');
x = bitsrl(x,8-R);
dt = ['ubit' num2str(R)];
count = fwrite(fid,x,dt);
fclose(fid);
endDecIm
function decIm(fi)
fid = fopen(fi,'r');
R = fread(fid,R,'ubit3');
f = fread(fid,f,'ubit16');
c = fread(fid,c,'ubit16');
dt = ['ubit' num2str(R)];
x = fread(fid,[f, c],dt);
y = bitsll(x,8-R);
z = bitset(y,8-R);
z = uint8(z);
fclose(fid);
imshow(z);
end