Matlab - Comparar y cambiar bit

 
Vista:
sin imagen de perfil

Comparar y cambiar bit

Publicado por Marco Antonio (61 intervenciones) el 04/10/2017 20:11:46
Tengo una matriz P1 con 10 números digamos 1 al 10 esta matriz es de una clumna por 10 filas, cada numero tiene su representación binaria en este caso seria
1=0001
2=0010
3=0011
4=0100
5=0101
6=0110
7=0111
8=1000
9=1001
10=1010

ahora tengo que hacer una matriz de 40 dígitos de 1 fila y 40 columnas poniendo en orden del 1 al 10 seria
P2=[1 2 3 4 5 6 7 8 9 10] ahora tengo que comparar un numero aleatorio r que sea menor que 0.05 a cada bit
P2=[0001001000110100010101100111100010011010] por ejemplo el primer bit lo selecciono y genero un numero r y lo comparo con 0.05 si es menor lo cambio de 0 a 1, en el caso del bit 4 genero un numero r si es menor a 0.05 lo cambio de 1 a 0 y así con todos los bits, después que el lazo termino y cambio los bit que fueron seleccionados para ser cambiadnos necesito saber que bits fueron cambiados y volver P2 en la misma forma de P1 y volver a valores decimales que no serán los mismo ya que algunos an cambiando. Gracias de Antemano
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

Comparar y cambiar bit

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 05/10/2017 07:45:58
un avance
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
clear all
A={'0001','0010','0011','0100','0101','0110','0111','1000','1001','1010'};
for i=1:length(A)
    P2(i)=bin2dec(A(i));
end
P2;
P3=[];
for i=1:length(A)
    P3=[P3,A{i}];
end
P3
for i=1:length(P3)
    b=str2double(P3(i));
    r=rand;
    if r<0.5;
        P3(i)=num2str(~b);
    end
end
P3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
>> compar_bit
P3 =
0001001000110100010101100111100010011010
P3 =
1100000011110010001111101001001000011111
>> compar_bit
P3 =
0001001000110100010101100111100010011010
P3 =
1000001000000011010011010011110010000001
>> compar_bit
P3 =
0001001000110100010101100111100010011010
P3 =
1101111100001111101001001011001010010111
>> compar_bit
P3 =
0001001000110100010101100111100010011010
P3 =
1001110010101011001110110110110011000101




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
1
Comentar
sin imagen de perfil

Comparar y cambiar bit

Publicado por Marco Antonio (61 intervenciones) el 05/10/2017 15:53:18
Esta perfecto el programa solo una cosa yo no declaro A, A es el resultado del programa y es en numeros digitales te pongo un ejemplo del resultado x12 =

1.0e+12 *

Columns 1 through 4

1.581565454723000 1.581565312128000 3.265749054955000 3.265749054961000

Columns 5 through 8

2.455513809066981 0.549196200819480 0.107461939059000 0.107461939043000

Columns 9 through 10

1.551126199827000 1.396470291823000

este resultado lo tengo que poner como la variable A que declaraste, yo intente sin suerte.
a otra cosa al final de programa tuyo el resultado P3 esta perfecto solo que ahora tengo que hacer de P3 del mismo formato de A pero con los bit cambiados pongo un ejemplo
P3 =

0001000000110100000101100111100010011010

P4 =

0001
0000
0011
0100
0001
0110
0111
1000
1001
1010

y el paso final convertir P4 a valores decimales.

Te envio una copia del programa que estoy haciendo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Comparar y cambiar bit

Publicado por Marco Antonio (61 intervenciones) el 05/10/2017 16:48:08
Disculpe fue un error mio se podrá implementar lo que propongo ? en mi segunda propuesta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Comparar y cambiar bit

Publicado por Marco Antonio (61 intervenciones) el 06/10/2017 18:52:12
Por favor me podrían responder es muy importante yo estado tratando si suerte lo único que pido es como cambiar una matriz de P1 de [10,1] de valores digitales por ejemplo

P1=
1
2
3
4
5

a un formato de A={'0001','0010','0011','0100','0101','0110','0111','1000','1001','1010'};

como pasar de
P3 =
1001110010101011001110110110110011000101

a una matris de formato igual a A y luego adecimal
yo se que cometi un error pido disculpa podrian responderme por favor
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar