Matlab - Imprimir un arreglo de bits

 
Vista:
sin imagen de perfil
Val: 4
Ha aumentado su posición en 18 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

Imprimir un arreglo de bits

Publicado por Gabriela (2 intervenciones) el 21/10/2018 10:53:20
Hola, alguien me podría ayudar a imprimir una cadena de bits dentro de un fprintf, cuando intento imprimir la cadena me resultan unos cuadros.
Captura

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
clear all
clc;
ka=1;
 
caracteres(ka)=0;% Matriz
Texto = fopen('ManualparaserNino.txt','r'); %Abrir el archivo
VectorTexto=fscanf(Texto, '%c'); %Escanear el archivo y guardarlo en la matriz cadena
fclose(Texto);
 
    Ale4=randi([0 15],1,1);
    BAle4=de2bi(Ale4,'left-msb');
 
    Ale8=randi([0 255],1,1);
    BAle8=de2bi(Ale8,'left-msb');
 
    Ale16=randi([0 65535],1,1);
    BAle16=de2bi(Ale16,'left-msb');
 
for i=32:255 % 225 caracteres Ascii
    dat=char(i);%Char convierte el numero ascii a caracter
    total=length(strfind(VectorTexto,dat));
    probabilidad=total/length(VectorTexto);%probablidad #eventos/#totalEventos
    logaritmo=log2(1/(probabilidad));%probablidad #eventos/#totalEventos
 
    Asig_i=(i);
    BAsig_i=de2bi(Asig_i,'left-msb');
 
    if(total ~= 0)% Sí el total es diferente de cero se mostrara
        caracteres(ka)=total;
        x = logaritmo;
        y=0;
            if (x>0) && (x<=2)
                y =2;
 
                CadenaAsig=BAle4;
            elseif (x>2) && (x<=4)
                y=4;
                CadenaAsig=BAle4;
            elseif (x>4) && (x<=8)
                y=8;
                CadenaAsig=BAle8;
            else
                y=16;
                CadenaAsig=BAle16;
            end
        fprintf('Caracter: %c se repite: %d veces, Cadena asignada %s \n',dat,total, BAsig_i);
        ka=ka+1;
    end
end
fprintf('Tamano del texto de: %d caracteres',length(VectorTexto));% ManualparaserNino.txt

El código cuenta el número de caracteres del manual para ser niño calcula la probabilidad y la cantidad de información que recibe con esta información necesito asignar 2 cadenas de bits correspondientes, una fija y una aleatoria. pero no puedo imprimirlas. Espero me puedan ayudar, saludos cordiales.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Imprimir un arreglo de bits

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 21/10/2018 16:51:36
1
2
3
4
5
6
7
8
clear all
for i=254:255
     Asig_i=(i);
    BAsig_i=de2bi(Asig_i,'left-msb');
       fprintf( 'Cadena asignada %s \n', num2str(BAsig_i));
    fprintf( 'Cadena asignada %s \n', strrep(num2str(BAsig_i),' ',''));
    fprintf('\n')
end


1
2
3
4
5
6
>> imprimir1
Cadena asignada 1  1  1  1  1  1  1  0
Cadena asignada 11111110
 
Cadena asignada 1  1  1  1  1  1  1  1
Cadena asignada 11111111


Para su codigo
1
2
fprintf('Caracter: %c se repite: %d veces, Cadena asignada %s \n',dat,total, num2str(BAsig_i));
fprintf('Caracter: %c se repite: %d veces, Cadena asignada %s \n',dat,total, strrep(num2str(BAsig_i),' ',''));


Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab


http://matlabcaballero.blogspot.com
https://www.facebook.com/matlabcaballero
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar