• Viernes 17 de Abril de 2026, 15:39

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - suichi_san

Páginas: [1]
1
Matlab / Funcion recursiva
« en: Jueves 19 de Noviembre de 2009, 22:51 »
Tengo el siguiente codigo que me arroja los valores de c, f, D y minimo y maximo para una secuencia:
co=[1,2];
minimo=[];
maximo=[];
a=100*rand(1,100);
[f,c,D]=lloyds(a,co)
for i=1:length(a)-1
    if a(i)<=f
        k=length(minimo);
        minimo(k+1)=a(i);
    else
        k=length(maximo);
        maximo(k+1)=a(i);
    end
end
minimo;
maximo;

Minimo y maximo son dos nuevas secuencia que surgen a partir de la condicion de f.
Mi pregunta es, como puedo hacer que se repita la funcion muchas veces, por ejemplo con un while en donde se compare la D con otro valor Di establecido al inicio?
while D>=Di
se debe repetir el proceso hasta qye se cumpla esta condicion para crear sencuencias N=2 4 8 16...etc.
end

y una vez que ya se llegue al final del whilw, que los c se guarden en otro vector.

Espero que me puedan ayudar.

2
Matlab / Como guardar datos en otro vector?
« en: Martes 10 de Noviembre de 2009, 21:53 »
Cual es la sintaxis para guardar datos en un nuevo vector?
if  n<=f
            n=A; %Como se escribe para que n se guarde en un nuevo vector llamado A???????

Gracias

EDITO:
Pues mi problema radica en que quiero obtener los centroides de una secuencia de numero aleatoriso, pero una vez que se obtienen, como los guardo en otro vector?
Por favor, espero que me puedan ayudar, para eso dejo el codigo que estoy utilizando haber si saben donde esta el error:

% Secuencia de 10000 numeros aleatorios entre 0 y 100:
y=100*rand(1,10000);
%
% Secuencia de entrenamiento:
CI=rand(2,1);
%
% Se calculan la frontera y el centroide, la funcion lloyds lo calcula automaticamente:
[f,c]=lloyds(y,CI)
%
% Se codifica de forma uniforme:
[inds,sq] = quantiz(y,f,c);
%
% Se calcula la distorsion:
N=length(sq)
resta=y'-sq;
cuad=resta.^2;
D=mean(cuad)
% Se establece el valor de Di:
Di=10^-3;
A=[ ];
B=[ ];
CODEBOOK=[ ];
% Comienza el ciclo repetitivo:
if D<=Di
    CODEBOOK=c;% se guarda el centroide en otra variable

else
    %se realiza una nueva division de la nueva region
    for n=1:10000
        if  n<=f
      % se mete a otra variable ¿como se mete en otra variable?
            A=n;
      % se repite el algortimo inicial
            CI=rand(2,1);
            [f,c]=lloyds(A,CI)
            [inds,sq] = quantiz(A,f,c);
      % se tiene una nueva f y dos nuevos c
      % se calcula la distorsion
            N=length(sq)
            resta=A'-sq;
            cuad=resta.^2;
            D=mean(cuad)
      % nueva D

        else
      % se mete a otra variable ¿como se mete en otra variable?  
            B=n;
            CI=rand(2,1);
            [f,c]=lloyds(B,CI)
            [inds,sq] = quantiz(B,f,c);
      % se tiene una nueva f y dos nuevos c
      % se calcula la distorsion

            N=length(sq)
            resta=A'-sq;
            cuad=resta.^2;
            D=mean(cuad)
      % nueva D
        end
    end
end
% Se repite el ciclo hasta que se tienen los valores finales
% Se muestra el codebook final

Y lo que me preguntabas, n representa los elementos de y, ya que debe compararse uno por uno con el valor de f para saber a que vector A o B se guarda.
Espero que me puedas ayudar.

3
Matlab / Funcion lloyds para vectores
« en: Lunes 9 de Noviembre de 2009, 21:40 »
Hola a todos, tengo un problema con un programa para matlab. El chiste es que tengo que simular la cuantizacion escalar y vectorial, y uso el siguiente codigo para hacer la escalar de donde obtengo una frontera y dos centroides, pero para la vectorial me aparece error y dice que mi variable Ci debe ser vector, pero segun yo, ya es un vector.....ayuda!!!!!!!!!!!!

% Secuencia de 10000 números aleatorios entre 0 y 100:
y=100*rand(1,10000);
% Secuencia de entrenamiento:
CI=rand(2,1);
% Se calculan la frontera y dos centroides:
[f,c]=lloyds(y,CI)
% Se codifica la secuencia de forma uniforme:
[inds,sq] = quantiz(y,f,c);
% Se calcula la distorsion:
N=length(sq)
resta=y'-sq;
cuad=resta.^2;
D=mean(cuad)

Páginas: [1]