?? generadordeprob.asv
字號:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%-----------Nombre de Archivo------%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Generador de probabilidades
%%%%%%%%%%%%%%%%%%%%%%%%%%%%-----------Funcionalidad----------%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Este archivo se encarga de leer un archivo de texto en binario, agrupar en
% n bits que representan 2 a la n mensajes, y calcular la probabilidad de
% de los mensajes.
%Aqui tambien se genera el de probabilidades "prob", el vector de mensajes validos "MsgValidos", y el vector de orden
%original que tenia el vector de probabilidades antes del ordenamiento "ordenAnterior"
%Creadores:----------------------------------------------------------------
%Alumnos de Telecomunicaciones generacion 2007 CINVESTAV GDL
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all
clc;
J=input('Especifica J= ');%Parmetro de entrada J para agrupar los bits
switch J % Aqui se selecciona el modo de agrupamiento que matlab realizara, 1,2,4,8,16
case {1}
strJ='1';
case {2}
strJ='2';
case {4}
strJ='4';
case {8}
strJ='8';
case {16}
strJ='16';
end;
msg=2^J;%Numero de mensajes a transmitir, 2 bits= a 4, 4 bits= a 16 etc
file='Metallica.txt';%Espesifica el archivo a leer, puede ser txt o xml
TipoDeBits='ubit';%Modo de lectura, en este caso bits sin signo, ver ayuda
fid = fopen(file);%Comando para abrir el archivo que espesifica "file"
ModoDeLectura=strcat(TipoDeBits,strJ);%Se concatena el modo de lecura con el numero de bits a leer, ejemplo "ubit2" se leeran de dos en dos bits
MsgBits = fread(fid,ModoDeLectura);%Realiza la lectura del archivo
MsgBitsT=MsgBits';%Se transporne el areglo que entrega matlab de n X 1 a 1 X n
MatrixDeMensajes=zeros(1,msg);% Esta variable se utiliza como arreglo de donde se almacena el numero de repeticiones de cada mensaje
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%La siguiente estructura de fors se encarga de buscar cuantas veces se
%repite los mensajes que son determinados por el numero de bits agrupados
%Ejemplo: si J=4 se tendran 16 mensajes, y en el archivo se vera el numero
%de ocurrencias
for k=1:msg%Busqueda del mensaje 1 a N
for n=1:length(MsgBitsT)%Longuitud total del archivo leido
if k-1==MsgBitsT(n)%Aqui se checa si coincide el mensajes k-1 con la posicion n de MsgBits
MatrixDeMensajes(k)=MatrixDeMensajes(k)+1;%Si el mensaje se repite se crea un contador dentro del vector MatrizDeMensajes
end;
end;
end;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Si alguno de los posibles mensajes tiene una ocurrencia nula se retira del
%vector de mensajes
MsgValidos=find(MatrixDeMensajes~=0);%Regresa los indices en donde las ocurrencia de los mensajes son cero
for k=1:length(MsgValidos)%Este for se encarga de ajustar los valores correctos de los mensajes con ocurrencia diferente de cero
MsgValidos(k)=MsgValidos(k)-1;%por ejemplo: el find que se encuentra arriba retorna indices de 1 a 16, por lo que
end %a los indices que regresa el find hay que restarle 1
%En el siguiente pasan las los contadores de la MatrizDeMensajes que son
%diferente de cero
ProbValidas=[];
for k=1:length(MatrixDeMensajes)
if MatrixDeMensajes(k)~=0 ;
ProbValidas=[ProbValidas MatrixDeMensajes(k)];%Concatenacion diferentes de cero
end
end
prob=ProbValidas./length(MsgBitsT);%Divicion de las probabilidades que son diferentes de cero entre el numero de bits en el archivo fuente
[prob ordenAnterior]=sort(prob,'descend');%En prob se ordenan las probabilidades de mayor a menor en orden decendente
%y en ordenAnterior se almacena
%el orden que tenia el vector de
%probabilidades antes del
%ordenamiento
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -