Tuesday, January 29, 2008

Word Processing For Engineers

[Aviso: Este post es un coñazo para todo el que no sea un ingeniero de telecomunicaciones obsesionado con Matlab, y puede que aunque lo seas también ;-P]

El otro dia me encontré con un problema curioso diseñando un filtro. Resulta que era un filtro con várias etapas, y aunque podía calcular polos y ceros de cada una de ellas, me dí cuenta de que luego iba a ser complicado encontrar manualmente los valores óptimos de los componentes, y que ademas, el efecto de cada una de las siguientes etapas iba a ser importante, así que de poco me servían las ecuaciones si no iban a modelar de manera más o menos precisa el filtro.

Así que decidí probar un método automatizado de fuerza bruta. Básicamente la idea era darle a Matlab un sistema de ecuaciones que describiera la función de transferencia. Pedirle que la calculara simbolicamente a partir de ellas. Meter la formula en una función de error y usar algoritmo de optimización no lineal multivariable con límites para que me diera los valores buenos.

Metí el sistema, unas 10 ecuaciones de 4 orden, y Matlab, en mi pobre portatil centrino 1.4GHz con 500MB de RAM se colgó. Simplifiqué un poco el sistema, y a la segunda obtuve la formula. Sin pensarme demasiado, copié toda la línea al editor de Matlab y en pocos segundos el editor se colgó. No entendía muy bien el porqué, así que probé a copiar la línea en el Wordpad. No se colgó. Pero cuando hice una operación de reemplazar * por .* para poder multiplicar vectores, Wordpad se colgó de nuevo. No entendía nada, hasta que copié aquella línea mágica a Word, y me dí cuenta que aquella línea tenía 80 páginas de largo!!!

¿Habeis visto muchas veces una ecuación de 80 páginas? Yo es la primera vez ;-P

Intenté hacer el reemplazar en Word pero también se colgó. Así que tuve que copiar el archivo de texto, llevarmelo a un Core 2 Duo con 2GB de RAM, y allí podía hacer los más de 100.000 reemplazos de * por .* sin que el ordenador se colgara. Lo curioso es que luego podía llevarlo de vuelta al portátil antiguo y Matlab no tenía problemas en trabajar con semejante ecuación.
¡El problema no estaba en Matlab trabajando con una ecuación de 80 páginas sino en los editores de texto!

Así que os pregunto: ¿Qué editor de texto usaríais para una tarea así sin que se colgara el ordenador?. Por cierto, antes de contestar usa Linux o similar, probad a usar Matlab en una plataforma Unix y vereis cuanto tarda en colgarse en cuanto le mandas hacer una gráfica (y sí, lo se por experiencia propia tanto con Linux como con Solaris).

19 comments:

Carlos Sanchez said...

Puedes usar EditPlus o para cosas asi usar cygwin y la linea de comandos, con algo como

sed s/aaa/bbb/g fichero.txt

para reemplazer aaa con bbb

adrmx said...

Por que no pruebas el http://notepad-plus.sourceforge.net/ alguna vez trabaje textos largos que hacían que se trabara el notepad y word en un pentium II a 400mhz.

Y ahora lo uso como remplazo de notepad y editor de xhtml y css :D

Has la prueba y cuentas que tal.

SrSolera said...

A mi el Ultra Edit siempre me ha ido genial: http://www.ultraedit.com/

Te recomiendo probarlo, es una herramienta realmente profesional.
En casi todas las empresas que conozco lo utilizan.

Lo acabo de probar con un txt de 67mb y me reemplaza sin problemas, y en un portátil normalito!

Un saludo.

Ed said...

Me alivia que el problema con las gráficas en matlab y sobre linux no fuera sólo mío xD Creo recordar que explotaba en cuanto intentabas hacer zoom.

kikollan said...

Mi experiencia me dice que a Matlab no se le da muy bien el cálculo simbólico, aunque las alternativas tampoco suelen ser muy satisfactorias. La gente usa Mathematica, porque tiende a "vomitar" fórmulas mas sintéticas que matlab (las funciones de simplificación son mejores).

kirai said...

vi como editor para archivos tochos nunca te fallará. Yo he abierto incluso archivos de varios gigas.

sed para reemplazar y hacer manipulaciones regex desde línea de comandos. Por ejemplo:

sed -i 's/foo/foo_bar/g' *.*

Si quieres reemplazar en varios archivos:

find . * | xargs grep -l "foo" | xargs sed -i \'\' -e s/foo/faa/g

http://en.wikipedia.org/wiki/Sed

http://en.wikipedia.org/wiki/Vi

Manuel said...

Maple para calculo simbolico tambien funciona mejor...

victor said...

Vaya,
Yo nunca tuve problemas con MatLab en Linux, y mira que lo he usado y lo sigo usando, mucho mas que en windows.
Si lo que quieres es hacer graficas Pablo tambien tienes gnuplot (bastante potente y sencillo) y si quieres un paquete estadistico R es cojonudo (yo diria mejor que MatLab en los conceptos de estadistica pura, peor en todo lo que no sea estadistica). R se usa en los departamentos de matematicas y estadistica en las mejores universidades del mundo, jeje, vease Stanford

Sobre editores de texto... en el trabajo uso notepad++ y no he tenido problemas nunca. Si quieres linux, vi es potente, aunque lioso de usar. Ya sabes ademas que soy un chico Latex para eso de escribir documentos...

Para calculo simbolico yo tb solia utilizar Maple, aunque cada dia hago menos de calculo simbolico y mas de numerico... recuerda que somos ingenieros...

En fin, saludos!

Kinchine said...

Has probado la filter design toolbox?

futuro ingeniero industrial said...

Bueno Pablo, y ahora porqué no hablas del currículum del Sr. Pizarro??? Te recuerdo que se sacó las oposiciones de abogado del Estado y de agente de valores y Bolsa, las dos oposiciones más duras de España. Hay que ser muy muy inteligente para conseguirlo. El currículum de Pizarro no lo tiene NADIE NADIE NADIE en todo el PSOE. Y como es millonario sabemos que no se ha metido en política por dinero. No como muchos socialistas. Lo más gracioso de todo es que Pepe Blanco no acabó ni primero de Derecho. A mi me daría vergüenza apoyar a semejante ignorante. Dime con quien andas...

Pablo said...

Me ha encantado lo de "oposicion de agente de valores y bolsa" "las dos mas duras de espanya"
jajajaja

Pizarro trabajo como agente de valores y bolsa, pero eso no es una oposicion! Fue ahi cuando abandono el sector publico!

Joder hay cada ignorante por ahi repitiendo consignas....

futuro ingeniero industrial said...

tu si que eres IGNORANTE. infórmate antes de hablar. Cuando el Sr. Pizarro sacó la oposición, la profesión de agente de valores no estaba liberalizada en España como ocurre ahora. no había brokers ni sociedades gestoras de valores. En la Bolsa sólo trabajaban funcionarios de alto nivel. Seguro que pepe blanco no trabajaba allí.

Pablo said...

Jajajaja
¿has vandalizado la wikipedia?
No me lo puedo creer!
Macho las IPs 80.31.54.15 son muy fáciles de identificar, y te puedo ver tanto en mi contador de visitas como en la wikipedia cambiando:

"En 1987 comenzó a trabajar como agente de cambio y bolsa, abandonando el sector público y adentrandose en el mundo financiero."

Por:
"En 1987 aprobó las oposiciones de agente de cambio y bolsa, adentrandose en el mundo financiero."

Ya se sabe, no te adaptes a la realidad!!!
Jajajjajaa
Que fuerte!
hay que estar muy desesperado: pedazo ignorante!

Skew said...

Que tal lo de usar algo como Google Docs y dejar q otros pongan la maquina??
Además, siempre q tengas red lo tendras a mano.
Pues nada un saludo en este primer comentario q te dejo.
Por cierto, q envidia me das!! A mi aun me quedan 4 asignaturas!! Viva el VLSI!!
(joder como me afectan estos examenes)

Francisco Sanchez said...

Pablo, lo que comentas me parece muy extranio. Yo he abierto archivos grandisimos con el editor de matlab, en ordenadores relativamente poco potentes (como el que mencionas al principio) y no he tenido nunca ningun problema.

Ayer, por ejemplo, tras leer tu post, trate de abrir uno de los archivos antiguos que tenia en el disco duro, de unos 6MB, y la cosa funciono sin problemas. Al abrirlo con Word, tambien sin problemas, el contador de numero de paginas se disparaba hasta mas de 2300, asi que estaba muy por encima de las 80 que mencionas. Tambien en Word, hice una operacion de reemplazo, con un poco mas de 500.000 substituciones. La cosa tardo un poco, y a mediados de la operacion me dio un mensaje del tipo: "Word se ha quedado sin memoria. Si hace click en continuar, no podra deshacer la operacion", pero vamos, le di a aceptar y no hubo ningun problema (mas alla del no poder usar la opcion de deshacer).

Probe tambien con el notepad, y ahi parece que la operacion de reemplazo se hace de manera incremental, es decir, le das a "replace all" pero vas viendo en tiempo real como se hacen los reemplazos uno a uno. El procedimiento resulto mucho mas lento, pero no se quedo bloqueado (aunque tambien es cierto que a mitad del camino me canse de esperar, y no llegue hasta el final :-).

No se, yo me inclinaria a pensar que el problema puede estar en hacer copy & paste de una gran cantidad de texto desde el interfaz de Matlab (aunque esto tambien me resulta extranio), o quizas en algun otro factor externo que no estemos teniendo en cuenta.

Un saludo.

corriols said...

Pablo, comprendo que te rías por lo del vandalismo, pero eso no le quita mérito a manolo pizarro. Además, no sé si te darás cuenta, pero basta una sencilla provocación para hacerte perder el tiempo.

Raúl said...

Yo no soy muy dado a hacer heroes de la nada... y menos heroes politicos, sea del partido que sea.

Pero el curriculum de ese señor me impresiona mucho. Igual que el tuyo Pablo... No es cuestión del partido que sea... pienso que si participase en un gobierno podría hacer cosas bien... porque raramente gente buena profesionalmente excepcional ha estado en el gobierno... sea este del color que fuera. Y despreciar a alguien profesionalmente por el color de sus ideas politicas... tu mismo sabras lo que es, que eres bastante inteligente.

Osica said...

:O ¡Las asignaturas de señales sirven! La verdad es que hay que reconocer que aunque al principio pienses que Matlab es una herramienta que creó el diablo para que acabes blasfemando en prácticas y vayas al infierno, al cabrón le pides un café y te lo hace xDDD

Me ha gustado tu blog ;D Me pasaré más por aquí, es un blog muy interesante jeje. Yo a ver si acabo el primer ciclo de teleco en Granada este año ^^

Un saludo!

SKaRCHa said...

Creo que el problema no está en que se cuelguen los editores con ficheros de textos grandes, si no con ficheros que tienen UNA LÍNEA MUY GRANDE.

Yo uso EditPlus y reemplazando texto en ficheros de varios megas va perfecto, pero cuando abro un fichero con una sola línea muy larga e intento reemplazar, ya se empieza a notar lentoooo... Tienes la sensación de que se ha colgado, pero si esperas con paciencia, termina. :)

Imagino que puede ser porque en memoria están guardando todo el texto por líneas, de forma que al reemplazar tienen que reservar memoria nueva para esa línea y copiar la línea reemplazando el texto a ese nuevo bloque de memoria. Esto con líneas pequeñas sería bastante rápido, pero con líneas grandes se tiene que notar más.

No estoy seguro, pero me imagino algo así.