programa_matlab_duda
Publicado por Esteban (1 intervención) el 07/02/2008 17:03:19
Buenas tardes, es que estoy programando en matlab una funcion que me represente la cuantificacion de dos señales Qn y Qr, que son salida de dos contadores; resulta que cuando que en la salida (en el plot), no obtengo la cuenta final de Qn, mientras que para Qr sí; los parámetros de entrada son R (cuenta máx contador Qr), N (cuenta máx contador Qn) y t (desfase entre clkant y clkant2, pero que en principio lo he puesto a cero). He creado la variable periodo con dos bits mediante la funcion ones y zeros, les pongo por aquí el programa, porque le he dado muchas vueltas pero ya no sé lo que le pasa, gracias a todo@s, saludos.
Programa:
function fase2(R,N,t)
%t argumento para el desfase
x = 1;
y = 1;
Qr=zeros(10001,1);
Qn=zeros(10001,1);
restafase = zeros( 10000,1 );
divisionentera = zeros (10000,1 );
%Operaciones
periodo = [ones(1,x) zeros(1,y)];% creo el periodo de la señal: 1 0
clkant = 0;
clkant2 = 0;
for i = 1: 10000,
% if (Qr(i) < divisionentera(i))
% AQ = R;
% else
% AQ = 0;
% end;
if ( (clkant == 0 ) & periodo(rem(i,1)+1) ),
Qn(i+1) = rem( Qn(i) + 1, N ); % contador digital N; cuantificacion
end;
if ( (clkant2 == 0 ) & periodo(rem(i+t,1)+1) ),
Qr(i+1) = rem( Qr(i) + 1, R ); % contador digital R; cuantificacion
end;
clkant = periodo(rem(i,2)+1); % actualización del periodo clkant
clkan2 = periodo(rem(i+t,2)+1); % actualización del periodo clkant2
divisionentera(i) = floor((Qn(i)*R)/N);
restafase(i) = Qr(i) - divisionentera(i);
%restafase(i) = Qr(i) + AQ - divisionentera(i);
end;
plot (restafase(1:2000))
figure (2);
plot( Qn (1:2000));hold on;plot(Qr (1:2000), 'r'); hold off;
%figure (3);
%plot(periodo)
Programa:
function fase2(R,N,t)
%t argumento para el desfase
x = 1;
y = 1;
Qr=zeros(10001,1);
Qn=zeros(10001,1);
restafase = zeros( 10000,1 );
divisionentera = zeros (10000,1 );
%Operaciones
periodo = [ones(1,x) zeros(1,y)];% creo el periodo de la señal: 1 0
clkant = 0;
clkant2 = 0;
for i = 1: 10000,
% if (Qr(i) < divisionentera(i))
% AQ = R;
% else
% AQ = 0;
% end;
if ( (clkant == 0 ) & periodo(rem(i,1)+1) ),
Qn(i+1) = rem( Qn(i) + 1, N ); % contador digital N; cuantificacion
end;
if ( (clkant2 == 0 ) & periodo(rem(i+t,1)+1) ),
Qr(i+1) = rem( Qr(i) + 1, R ); % contador digital R; cuantificacion
end;
clkant = periodo(rem(i,2)+1); % actualización del periodo clkant
clkan2 = periodo(rem(i+t,2)+1); % actualización del periodo clkant2
divisionentera(i) = floor((Qn(i)*R)/N);
restafase(i) = Qr(i) - divisionentera(i);
%restafase(i) = Qr(i) + AQ - divisionentera(i);
end;
plot (restafase(1:2000))
figure (2);
plot( Qn (1:2000));hold on;plot(Qr (1:2000), 'r'); hold off;
%figure (3);
%plot(periodo)
Valora esta pregunta


0