Función Lloyd en Matlab
Publicado por ANgel (1 intervención) el 17/02/2013 05:51:19
¡Hola gente del foro! :D
Bueno, estoy aquí esperando que alguien tenga una idea de como orientarme con un programa en Matlab.
Resulta que en clase vimos cómo funciona el Algoritmo de Lloyd, permite cuantizar una señal y darle a una muestra un valor cuantizado.
El ejemplo que nos mostró el profesor fue:
En este ejemplo N representa los bits usados para la representación de niveles del cuantizador
y se aplica a una señal senoidal en un período completo
después viene la función de Lloyd en la que entran los parametro s de partición ( las fronteras de las regiones del cuantizador) codeblook (los centroides de esas regiones)
Bueno, intenté ahora usar un archivo de audio para cuantizarlo y graficar la señal cuantizada.
El código es el siguient:e:
El código funciona bien hasta que se llega a Lloyd, me marca el siguiente error:
??? Error using ==> lloyds at 34
Training set must be a vector.
( "at 34 es justamente la línea donde esta la funcion de Lloyd
[partition, codebook]= lloyds(sig, N); )
Error in ==> Cuantizadormusica at 19
[partition, codebook]= lloyds(sig, N);
Entonces, ¿Cuál fue mi error? el archivo de audio no fue guardado en un vector?
Espero alguien pueda guiarme con esto.
Gracias! o/
=]
Bueno, estoy aquí esperando que alguien tenga una idea de como orientarme con un programa en Matlab.
Resulta que en clase vimos cómo funciona el Algoritmo de Lloyd, permite cuantizar una señal y darle a una muestra un valor cuantizado.
El ejemplo que nos mostró el profesor fue:
1
2
3
4
5
6
7
N=2^3;
t= [0:1000]*pi/50;
sig= sin(t);
[partition, codebook]= lloyds(sig, N);
[indx, quant, distor]=quantiz(s, partition, codebook);
figure(2)
plot(t, sig, t, quant,'--');
En este ejemplo N representa los bits usados para la representación de niveles del cuantizador
y se aplica a una señal senoidal en un período completo
después viene la función de Lloyd en la que entran los parametro s de partición ( las fronteras de las regiones del cuantizador) codeblook (los centroides de esas regiones)
Bueno, intenté ahora usar un archivo de audio para cuantizarlo y graficar la señal cuantizada.
El código es el siguient:e:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[y, Fs, nbits] = wavread('lima.wav')
%Fs= 44100, nbits=16,
wavwrite(y, 'lima1.wav')
s=wavread('lima1.wav')
figure (1)
subplot(2,1,1)
plot (s)
%Análisis Espectral de la muestra
Y=fft(s); % transformada rápida de Fourier.
A=Y.*conj(Y); % potencia de la señal. Agos
f=(100:3000);
subplot(2,1,2)
plot (f, A(1:2901));
N=2^3;
t= [0:1000]*pi/50;
sig= y;
[partition, codebook]= lloyds(sig, N);
[indx, quant, distor]=quantiz(s, partition, codebook);
figure(2)
plot(t, sig, t, quant,'--');
El código funciona bien hasta que se llega a Lloyd, me marca el siguiente error:
??? Error using ==> lloyds at 34
Training set must be a vector.
( "at 34 es justamente la línea donde esta la funcion de Lloyd
[partition, codebook]= lloyds(sig, N); )
Error in ==> Cuantizadormusica at 19
[partition, codebook]= lloyds(sig, N);
Entonces, ¿Cuál fue mi error? el archivo de audio no fue guardado en un vector?
Espero alguien pueda guiarme con esto.
Gracias! o/
=]
Valora esta pregunta


0