miércoles, 25 de octubre de 2017

Ajustar brillo de la pantalla oficial de Raspberry Pi

Busqué como ajustar el brillo de la pantalla, ya que está al máximo (va de 0 a 255) y en la mayoría de los blogs y páginas viene el ajuste mediante los siguientes comandos:

Para activar la pantalla:
echo 0 > /sys/class/backlight/rpi_backlight/bl_power
Para desactivarla:
echo 1 > /sys/class/backlight/rpi_backlight/bl_power
Para ajustar el brillo, n es el valor que puede ser entre 0 y 255:
echo n > /sys/class/backlight/rpi_backlight/brightness

Sin embargo se dan muchos problemas, entre ellos que no se tiene permiso o símplemente 
no hace nada. La manera en que lo resolví fue con la publicación de linusg, 
ella se incluye un paquete de Python con el cual se puede ajustar el brillo así 
como saber que valor se tiene actualmente.
Lo recomiendo ámpliamente.


lunes, 24 de julio de 2017

Error: Windows no se puede instalar en la partición 1 del disco 0

Cuando tratamos de formatear una computadora y deseamos instalar el sistema operativo (para este caso Windows en sus versiones 7, 8, 8.1, 10) eliminamos todas las particiones sin embargo,  suele aparecer el error Windows no se puede instalar en la partición 1 del disco 0 , esto se puede solucionar realizando el siguiente procedimiento:

A. Llegar a la pantalla de instalación.
B. Entrar a una ventana de consola tecleando Shift+F10
C. En la ventana de consola escribir los siguientes comandos:

1- diskpart (Pulse tecla Intro)
2- list disk (Pulse tecla Intro)
3- select disk 0 (Pulse tecla Intro) (El número asignado a su unidad)
4- clean (Pulse tecla Intro)
5- create partition primary (Pulse tecla Intro)
6- active (Pulse tecla Intro)
7- format fs=ntfs quick (Pulse tecla Intro)
8- assign (Pulse tecla Intro)
9- exit (Para salir de la consola)

D. Reiniciar la instalación y ahora ya será posible instalar el sistema en la única partición que dejamos.

Fundamentos de programación

Programa

Un programa es una secuencia de instrucciones (escritas en algún lenguaje de programación) pensado para resolver algún tipo de problema.
Se debe de considerar que si no sabemos resolver el problema no podremos escribir el programa. Por ejemplo, si no sabemos que es una suma, sería casi imposible hacer un programa para que nos sume dos números, a no ser que alguien nos ayudara.

Algoritmo
Un algoritmo es una sucesión finita de pasos (no instrucciones como en los programas) no ambiguos que se pueden llevar a cabo en un tiempo finito.
•La descripción de cada paso no lleva a ambigüedades, los pasos son absolutamente explícitos y no inducen a error
•El número de pasos es finito.
•Tienen un principio y un fin.
Por ejemplo, cuando quiero ver una película de Netflix, podría hacer los siguientes pasos (algoritmo):
1.Abro Netflix.
2.Busco si está la película que quiero ver.
3.SI está, la veré, SI NO, buscaré en otro lugar.
4.Preparo todo, mi lugar, botana, etc.
5.Doy reproducir a la película.

Diagrama de flujo
Un diagrama de flujo es  una representación gráfica del algoritmo. Expresamos los pasos del algoritmo mediante un esquema con unos símbolos establecidos.
Un diagrama de flujo debe proporcionar una información clara, ordenada y concisa de todos los pasos a seguir.

Ejemplo: Un algoritmo para cocinar un huevo para otra persona.
Pregunto si quiere el huevo frito.
1.Si me dice que SI, lo frio, si me dice que NO, lo hago hervido.
2.Una vez cocinado le pregunto SI quiere sal en el huevo.
3.Si me dice que NO lo sirvo en el plato. Si me dice que SI le hecho sal y después lo sirvo en el plato.
4.Pongo el plato a la persona en la mesa.



El pseudocódigo
El pseudocódigo es una forma de escribir los pasos, pero de la forma más cercana al lenguaje de programación que vamos a utilizar, es como un falso lenguaje, pero en nuestro idioma, en el lenguaje humano.

Si se sabe hacer el pseudocódigo del programa, pasarlo a cualquier lenguaje de programación es muy sencillo, solo se debe de aprender los comandos equivalentes a las instrucciones en pseudocódigo. 
Palabras a usar en el pseudocódigo:
Inicio: inicializa el pseudocódigo.
Fin : finaliza el pseudocódigo.
Escribir o mostrar: Escribe en pantalla el texto que pongamos entre paréntesis o también puede escribir en pantalla el valor de una variable (entre ellas los resultados).
Leer: lee lo que el usuario introduce desde el teclado y guarda el valor (dentro de una variable).
Calcular: realiza operaciones matemáticas.

•Ejemplo: sumar dos números
1.Inicio
2.Escribir: “Ingrese número 1”.
3.Leer número 1.
4.Escribir: “Ingrese número 2”.
5.Leer número 2.
6.Calcular suma de número 1 y número 2.
7.Escribir resultado de la suma.
8.Fin

Comentarios
Se utilizan para realizar comentarios sobre el código del programa, son de gran ayuda en los proyectos cuando distintos programadores trabajan en mismo código e incluso para evitar tener que revisar muchas líneas de código para saber que realiza una sola línea o bloque de código.
Se suele utilizar // en los pseudocódigos y ene los lenguajes de programación suele variar (--,%,/).

Variables
Una variable es como una caja donde metemos cosas (datos).
Una variable tiene un nombre, que puede ser una letra, una palabra, varias palabras unidas por el guion bajo o varias palabras sin separar pero la primera letra de cada palabra en mayúsculas ejemplo: VidasPerdidas, vidaperdidas, vidas_perdidas.
Ojo las mayúsculas y minúsculas son muy importantes en las variables, no es la misma variable numero que Numero, son dos diferentes. Advertencia tampoco se pueden poner acentos en el nombre de las variables.

Las variables también tienen un valor que es lo que hay dentro de ella en ese momento y que puede ir variando según se vaya desarrollando el programa, por eso se llama variable.
Una variable dependiendo de su valor puede ser de distintos tipos (dependiendo del lenguaje). Puede ser numérica, si solo puede tener un valor numérico, de texto, si solo puede contener texto (letra, palabra o frase también llamada string), etc.
•En las variables de texto, su valor (el texto), debe ir entre comillas, para diferenciar que el texto es texto y no es el nombre de otra variable. Por ejemplos vidas = "Cinco" o vidas = "5". En los dos casos el valor es un texto, nunca el valor de 5.
•En  los lenguajes de programación se puede utilizar comillas simples o dobles: “perro”, ‘perro’.
•Hay otras variables que se llaman booleanas que solo pueden tener dos valores true o false (verdadero o falso). Normalmente true se puede sustituir por el valor 1 y false por el 0.
•Ejemplo: declaración y asignación de variables.
Edad=25//variable numérica
Nombre=“Pepe Pecas”//variable de texto o string
Casado=false//variable booleana



Una variable global es la que se puede utilizar en todo el programa.
Una variable local al salir del lugar donde la hemos asignado un valor, perderá ese valor y ya no existirá (en una función, en una clase, etc). 

domingo, 11 de septiembre de 2016

Graficar en Matlab

Para graficar una variable en Matlab basta de las siguientes líneas:

clc %limpiar pantalla
clear all %limpiar las variables en el workspace
close all %cerrar las ventanas abiertas (excepto el workspace y el editor de scripts)

m=rand(1,1000); %se genera una variable en forma de vector de nombre "n" de tamaño 1x1000 con elementos random (entre 0 y 1)
figure() %se genera una ventana para una figura

plot(m) %se grafica la variable m con la función plot

Ejecutando el código anterior se obtiene la siguiente ventana

Si se desea guardar la imagen basta con ir al menú File y seleccionar Save as, aparecerá la ventana para indicar donde guardarla y en que formato. Si se desea tener la gráfica y editarla posteriormente la mejor opción es con extensión .fig. Otro formato interesante es con la extensión .eps con la cual se puede trabajar en Latex (ver )


Si solo se desea copiar al portapapeles
Se abre el menú Edit y se elige Copy figure, por ejemplo para usarla en Word.

Dar nombre a los ejes X y Y
Para dar nombre a los ejes X y Y se utiliza el comando xlabel y ylabel respectivamente como se muestra a continuación:

clc %limpiar pantalla
clear all %limpiar las variables en el workspace
close all %cerrar las ventanas abiertas (excepto el workspace y el editor de scripts)

m=rand(1,1000); %se genera una variable en forma de vector de nombre "n" de tamaño 1x1000 con elementos aleatorios (entre 0 y 1)
figure() %se genera una ventana para una figura
plot(m) %se grafica la variable m con la función plot
xlabel('Título para el eje X')%nombrar el eje x

ylabel('Título para el eje Y')%nombrar el eje y


Título de la gráfica
Para dar título a la gráfica se utiliza la función title, a continuación se describe:

clc %limpiar pantalla
clear all %limpiar las variables en el workspace
close all %cerrar las ventanas abiertas (excepto el workspace y el editor de scripts)

m=rand(1,1000); %se genera una variable en forma de vector de nombre "n" de tamaño 1x1000 con elementos random (entre 0 y 1)
figure() %se genera una ventana para una figura
plot(m) %se grafica la variable m con la función plot
xlabel('Título para el eje X')%nombrar el eje x
ylabel('Título para el eje Y')%nombrar el eje y
title('Título para gráfica')% darle título  a la gráfica

Leyenda a la gráfica

La leyenda de lo que se grafica se crea con legend, a continuación se describe:

clc %limpiar pantalla
clear all %limpiar las variables en el workspace
close all %cerrar las ventanas abiertas (excepto el workspace y el editor de scripts)

m=rand(1,1000); %se genera una variable en forma de vector de nombre "n" de tamaño 1x1000 con elementos random (entre 0 y 1)
figure() %se genera una ventana para una figura
plot(m) %se grafica la variable m con la función plot
xlabel('Título para el eje X')%nombrar el eje x
ylabel('Título para el eje Y')%nombrar el eje y
title('Título para gráfica')% darle título  a la gráfica
legend('m')%leyenda para lo que se grafica

 
Grosor, forma y color de la lineas
Para cambiar el color se debe de agregar la letra que pertenece a cada uno de los colores disponibles en la función plot, por default se tiene al colo azul, a continuación se escribe la letra perteneciente a cada color.
b     blue      
g     green      
r     red       
c     cyan    
m     magenta 
y     yellow       
k     black
w     white     

Formas para graficar cada punto en la gráfica:

.     point-punto             
o     circle-círculo            
x     x-mark- marca en forma de x           
+     plus-símbolo de suma               
*     star-asterísco            
s     square-cuadrado
d     diamond-rombo
v     triangle (down)-triángulo hacia abajo
^     triangle (up)-triángulo hacia arriba
<     triangle (left)--triángulo hacia la izquierda
>     triangle (right)--triángulo hacia la derecha
p     pentagram-pentagrama
h     hexagram-hexagrama
 -     solid-línea sólida
 :     dotted-línea punteada
  -.    dashdot-guión y punto
--    dashed-línea discontínua   
 (none)  no line-sin línea

El grosor de la línea se modifica con 'linewidth' dentro de plot seguido de coma y el grosor en forma numérica, en el siguiente ejemplo se grafica con color rojo, utilizando círculos y con un grosor de 3.

clc %limpiar pantalla
clear all %limpiar las variables en el workspace
close all %cerrar las ventanas abiertas (excepto el workspace y el editor de scripts)

m=rand(1,1000); %se genera una variable en forma de vector de nombre "n" de tamaño 1x1000 con elementos random (entre 0 y 1)
figure() %se genera una ventana para una figura
plot(m,'ro','linewidth',3) %se grafica la variable m con la función plot, en color rojo, utilizando círculos y con un grosor de 3
xlabel('Título para el eje X')%nombrar el eje x
ylabel('Título para el eje Y')%nombrar el eje y
title('Título para gráfica')% darle título  a la gráfica

legend('m')%leyenda para lo que se grafica




El uso de círculos para graficar la variable m no fue muy conveniente en esta caso, para verlo mejor se graficará la función seno de los valores de m.

clc %limpiar pantalla
clear all %limpiar las variables en el workspace
close all %cerrar las ventanas abiertas (excepto el workspace y el editor de scripts)

m=1:10:360; %se genera una variable en forma de vector de nombre "n" de tamaño 1x36 con elementos random (inicia en 1 e incrementa de 10 en 10)
n=sind(m);% función seno de los valores de m
figure() %se genera una ventana para una figura
plot(n,'ro','linewidth',3) %se grafica la variable n con la función plot, en color rojo, utilizando círculos y con un grosor de 3
xlabel('Título para el eje X')%nombrar el eje x
ylabel('Título para el eje Y')%nombrar el eje y
title('Título para gráfica')% darle título  a la gráfica

legend('seno de m')%leyenda para lo que se grafica

 Otro configuración importante es el tamaño del marcador a utilizar , para ello se escribe dentro de plot 'markersize' seguido de una coma y el tamaño del marcador en forma numérica, enseguida se presenta un ejemplo:


clc %limpiar pantalla
clear all %limpiar las variables en el workspace
close all %cerrar las ventanas abiertas (excepto el workspace y el editor de scripts)

m=1:10:360; %se genera una variable en forma de vector de nombre "n" de tamaño 1x36 con elementos random (inicia en 1 e incrementa de 10 en 10)
n=sind(m);% función seno de los valores de m
figure() %se genera una ventana para una figura
plot(n,'ro','linewidth',3,'markersize',10) %se grafica la variable n con la función plot, en color rojo, utilizando círculos, con un grosor de línea 3 y con un marcador de tamaño 10
xlabel('Título para el eje X')%nombrar el eje x
ylabel('Título para el eje Y')%nombrar el eje y
title('Título para gráfica')% darle título  a la gráfica
legend('seno de m')%leyenda para lo que se grafica

Graficar simultáneamente dos variables
Para ello se grafica la primera variable, se escribe hold on y se grafica la siguiente variable, en el siguiente caso se graficará la función coseno y seno de los valores de m, debe de quedar claro que se debe de especificar la legenda, tamaño, forma y color para la variable:

clc %limpiar pantalla
clear all %limpiar las variables en el workspace
close all %cerrar las ventanas abiertas (excepto el workspace y el editor de scripts)

m=1:10:360; %se genera una variable en forma de vector de nombre "n" de tamaño 1x36 con elementos random (inicia en 1 e incrementa de 10 en 10)
n=sind(m);% función seno de los valores de m
o=cosd(m);% función coseno de los valores de m
figure() %se genera una ventana para una figura
plot(n,'ro','linewidth',3,'markersize',10) %se grafica la variable n con la función plot, en color rojo, utilizando círculos y con un grosor de 3
hold on
plot(o,'m+','linewidth',3,'markersize',10) %se grafica la variable o con la función plot, en color magenta, utilizando símbolos de suma y con un grosor de 3
xlabel('Título para el eje X')%nombrar el eje x
ylabel('Título para el eje Y')%nombrar el eje y
title('Título para gráfica')% darle título  a la gráfica

legend('seno de m','coseno de m')%leyenda para lo que se grafica


Función subplot
Si se desea tener las dos gráficas separadas pero en una misma ventana se utiliza la función subplot. Se escribe subplot, seguido de paréntesis donde se especifican las gráficas por ventana y la posición. Por ejemplo subplot(221) quiere decir que la ventana se formará por dos renglones ,dos columnas y el uno  indica la posición sobre la cual se graficará. Por lo tanto se tendrán cuatro gráficas en una misma ventana numeradas del 1 al 4.

clc %limpiar pantalla
clear all %limpiar las variables en el workspace
close all %cerrar las ventanas abiertas (excepto el workspace y el editor de scripts)

m=1:10:360; %se genera una variable en forma de vector de nombre "n" de tamaño 1x36 con elementos random (inicia en 1 e incrementa de 10 en 10)
n=sind(m);% función seno de los valores de m
o=cosd(m);% función coseno de los valores de m
figure() %se genera una ventana para una figura
subplot(221)
plot(n,'ro','linewidth',3,'markersize',10) %se grafica la variable n con la función plot, en color rojo, utilizando círculos y con un grosor de 3
xlabel('Título para el eje X')%nombrar el eje x
ylabel('Título para el eje Y')%nombrar el eje y
title('Título para gráfica')% darle título  a la gráfica
legend('seno de m')%leyenda para lo que se grafica
subplot(222)
plot(o,'m.-','linewidth',3,'markersize',10) %se grafica la variable o con la función plot, en color magenta, utilizando símbolos de suma y con un grosor de 3
xlabel('Título para el eje X')%nombrar el eje x
ylabel('Título para el eje Y')%nombrar el eje y
title('Título para gráfica')% darle título  a la gráfica
legend('coseno de m')%leyenda para lo que se grafica
subplot(223)
plot(n,'b:','linewidth',3,'markersize',10) %se grafica la variable n con la función plot, en color rojo, utilizando círculos y con un grosor de 3
xlabel('Título para el eje X')%nombrar el eje x
ylabel('Título para el eje Y')%nombrar el eje y
title('Título para gráfica')% darle título  a la gráfica
legend('seno de m')%leyenda para lo que se grafica
subplot(224)
plot(o,'g+','linewidth',3,'markersize',10) %se grafica la variable o con la función plot, en color magenta, utilizando símbolos de suma y con un grosor de 3
xlabel('Título para el eje X')%nombrar el eje x
ylabel('Título para el eje Y')%nombrar el eje y
title('Título para gráfica')% darle título  a la gráfica
legend('coseno de m')%leyenda para lo que se grafica

 
Se pueden realizar alguna modificaciones al subplot para organizar las gráficas en la ventana, por ejemplo se requieren tres gráficas en una misma ventana, dos en la parte superior y una en la parte inferior, el código se describe a continuación:
clc %limpiar pantalla
clear all %limpiar las variables en el workspace
close all %cerrar las ventanas abiertas (excepto el workspace y el editor de scripts)

m=1:10:360; %se genera una variable en forma de vector de nombre "n" de tamaño 1x36 con elementos random (inicia en 1 e incrementa de 10 en 10)
n=sind(m);% función seno de los valores de m
o=cosd(m);% función coseno de los valores de m
figure() %se genera una ventana para una figura
subplot(221)%dos renglones, dos columnas, posición 1
plot(n,'ro','linewidth',3,'markersize',10) %se grafica la variable n con la función plot, en color rojo, utilizando círculos y con un grosor de 3
xlabel('Título para el eje X')%nombrar el eje x
ylabel('Título para el eje Y')%nombrar el eje y
title('Título para gráfica')% darle título  a la gráfica
legend('seno de m')%leyenda para lo que se grafica
subplot(222)%dos renglones, dos columnas, posición 2
plot(o,'m.-','linewidth',3,'markersize',10) %se grafica la variable o con la función plot, en color magenta, utilizando símbolos de suma y con un grosor de 3
xlabel('Título para el eje X')%nombrar el eje x
ylabel('Título para el eje Y')%nombrar el eje y
title('Título para gráfica')% darle título  a la gráfica
legend('coseno de m')%leyenda para lo que se grafica
subplot(212)%se modifica el subplot pero solo se afectará al renglón dos, por lo tanto la gráfica abarcará la parte inferior
plot(n,'b:','linewidth',3,'markersize',10) %se grafica la variable n con la función plot, en color rojo, utilizando círculos y con un grosor de 3
xlabel('Título para el eje X')%nombrar el eje x
ylabel('Título para el eje Y')%nombrar el eje y
title('Título para gráfica')% darle título  a la gráfica
legend('seno de m')%leyenda para lo que se grafica



Si se desea visualizar mejor los ejes y título de la gráfica se aumenta el tamaño de letra y tipo mediante  'Fontsize',seguido de un valor numérico y de 'FontWeight',seguido del tipo de letra, por ejemplo 'bold' .

clc %limpiar pantalla
clear all %limpiar las variables en el workspace
close all %cerrar las ventanas abiertas (excepto el workspace y el editor de scripts)

m=1:10:360; %se genera una variable en forma de vector de nombre "n" de tamaño 1x36 con elementos random (inicia en 1 e incrementa de 10 en 10)
n=sind(m);% función seno de los valores de m
o=cosd(m);% función coseno de los valores de m
figure() %se genera una ventana para una figura
subplot(221)%dos renglones, dos columnas, posición 1
plot(n,'ro','linewidth',3,'markersize',10) %se grafica la variable n con la función plot, en color rojo, utilizando círculos y con un grosor de 3
xlabel('Título para el eje X','Fontsize',12,'FontWeight','bold')%nombrar el eje x
ylabel('Título para el eje Y','Fontsize',12,'FontWeight','bold')%nombrar el eje y
title('Título para gráfica','Fontsize',12,'FontWeight','bold')% darle título  a la gráfica
legend('seno de m')%leyenda para lo que se grafica

subplot(222)%dos renglones, dos columnas, posición 2
plot(o,'m.-','linewidth',3,'markersize',10) %se grafica la variable o con la función plot, en color magenta, utilizando símbolos de suma y con un grosor de 3
xlabel('Título para el eje X','Fontsize',12,'FontWeight','bold')%nombrar el eje x
ylabel('Título para el eje Y','Fontsize',12,'FontWeight','bold')%nombrar el eje y
title('Título para gráfica','Fontsize',12,'FontWeight','bold')% darle título  a la gráfica
legend('coseno de m')%leyenda para lo que se grafica

subplot(212)%se modifica el subplot pero solo se afectará al renglón dos, por lo tanto la gráfica abarcará la parte inferior
plot(n,'b:','linewidth',3,'markersize',10) %se grafica la variable n con la función plot, en color rojo, utilizando círculos y con un grosor de 3
xlabel('Título para el eje X','Fontsize',12,'FontWeight','bold')%nombrar el eje x
ylabel('Título para el eje Y','Fontsize',12,'FontWeight','bold')%nombrar el eje y
title('Título para gráfica','Fontsize',12,'FontWeight','bold')% darle título  a la gráfica

legend('seno de m')%leyenda para lo que se grafica

Para modificar los números de los ejes se modifica el gca mediante el código siguiente:
set(gca,'Fontsize',12,'FontWeight','bold')

Empleado en las gráficas es de la siguiente manera:

clc %limpiar pantalla
clear all %limpiar las variables en el workspace
close all %cerrar las ventanas abiertas (excepto el workspace y el editor de scripts)

m=1:10:360; %se genera una variable en forma de vector de nombre "n" de tamaño 1x36 con elementos random (inicia en 1 e incrementa de 10 en 10)
n=sind(m);% función seno de los valores de m
o=cosd(m);% función coseno de los valores de m
figure() %se genera una ventana para una figura
subplot(221)%dos renglones, dos columnas, posición 1
plot(n,'ro','linewidth',3,'markersize',10) %se grafica la variable n con la función plot, en color rojo, utilizando círculos y con un grosor de 3
xlabel('Título para el eje X','Fontsize',12,'FontWeight','bold')%nombrar el eje x
ylabel('Título para el eje Y','Fontsize',12,'FontWeight','bold')%nombrar el eje y
title('Título para gráfica','Fontsize',12,'FontWeight','bold')% darle título  a la gráfica
legend('seno de m')%leyenda para lo que se grafica
set(gca,'Fontsize',12,'FontWeight','bold')
subplot(222)%dos renglones, dos columnas, posición 2
plot(o,'m.-','linewidth',3,'markersize',10) %se grafica la variable o con la función plot, en color magenta, utilizando símbolos de suma y con un grosor de 3
xlabel('Título para el eje X','Fontsize',12,'FontWeight','bold')%nombrar el eje x
ylabel('Título para el eje Y','Fontsize',12,'FontWeight','bold')%nombrar el eje y
title('Título para gráfica','Fontsize',12,'FontWeight','bold')% darle título  a la gráfica
legend('coseno de m')%leyenda para lo que se grafica
set(gca,'Fontsize',12,'FontWeight','bold')
subplot(212)%se modifica el subplot pero solo se afectará al renglón dos, por lo tanto la gráfica abarcará la parte inferior
plot(n,'b:','linewidth',3,'markersize',10) %se grafica la variable n con la función plot, en color rojo, utilizando círculos y con un grosor de 3
xlabel('Título para el eje X','Fontsize',12,'FontWeight','bold')%nombrar el eje x
ylabel('Título para el eje Y','Fontsize',12,'FontWeight','bold')%nombrar el eje y
title('Título para gráfica','Fontsize',12,'FontWeight','bold')% darle título  a la gráfica
legend('seno de m')%leyenda para lo que se grafica
set(gca,'Fontsize',12,'FontWeight','bold')

Por último, si no deseas agregar código puedes generar tu gráfica y editarla con el editor de Matlab




Donde es posible editar las fuentes, colores, formas y demás.