08.11.2014 Views

Aprenda Matlab 6.1 - Universidad Politécnica de Madrid

Aprenda Matlab 6.1 - Universidad Politécnica de Madrid

Aprenda Matlab 6.1 - Universidad Politécnica de Madrid

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Capítulo 6: Programación <strong>de</strong> MATLAB página 75<br />

6.6.3. FUNCIONES FREAD Y FWRITE<br />

Estas funciones son análogas a fscanf y fprintf, pero en vez <strong>de</strong> leer o escribir en un fichero <strong>de</strong> texto<br />

(ASCII), lo hacen en un fichero binario, no legible directamente por el usuario. Aunque dichos<br />

ficheros no se pue<strong>de</strong>n leer y/o modificar con un editor <strong>de</strong> textos, tienen la ventaja <strong>de</strong> que las<br />

operaciones <strong>de</strong> lectura y escritura son mucho más rápidas, eficientes y precisas (no se pier<strong>de</strong>n<br />

<strong>de</strong>cimales al escribir). Esto es particularmente significativo para gran<strong>de</strong>s ficheros <strong>de</strong> datos. Para<br />

más información sobre estas funciones se pue<strong>de</strong> utilizar el help.<br />

6.6.4. FICHEROS DE ACCESO DIRECTO<br />

De ordinario los ficheros <strong>de</strong> disco se leen y escriben secuencialmente, es <strong>de</strong>cir, <strong>de</strong> principio a final,<br />

sin volver nunca hacia atrás ni realizar saltos. Sin embargo, a veces interesa acce<strong>de</strong>r a un fichero <strong>de</strong><br />

un modo arbitrario, sin ningún or<strong>de</strong>n preestablecido. Esto se pue<strong>de</strong> conseguir con las funciones ftell<br />

y fseek.<br />

En cada momento, hay una especie <strong>de</strong> cursor que indica en qué parte <strong>de</strong>l fichero se está<br />

posicionado. La función fseek permite mover este cursor hacia <strong>de</strong>lante o hacia atrás, respecto a la<br />

posición actual ('cof'), respecto al principio ('bof') o respecto al final <strong>de</strong>l fichero ('eof'). La función<br />

ftell indica en qué posición está el cursor. Si alguna vez se necesita utilizar este tipo <strong>de</strong> acceso a<br />

disco, se pue<strong>de</strong> buscar más información por medio <strong>de</strong>l help.<br />

6.7. Recomendaciones generales <strong>de</strong> programación<br />

Las funciones vectoriales <strong>de</strong> MATLAB son mucho más rápidas que sus contrapartidas escalares. En<br />

la medida <strong>de</strong> lo posible es muy interesante vectorizar los algoritmos <strong>de</strong> cálculo, es <strong>de</strong>cir, realizarlos<br />

con vectores y matrices, y no con variables escalares <strong>de</strong>ntro <strong>de</strong> bucles.<br />

Aunque los vectores y matrices pue<strong>de</strong>n ir creciendo a medida que se necesita, es mucho más<br />

rápido reservarles toda la memoria necesaria al comienzo <strong>de</strong>l programa. Se pue<strong>de</strong> utilizar para ello<br />

la función zeros. A<strong>de</strong>más <strong>de</strong> este modo la memoria reservada es contigua.<br />

Es importante utilizar el profile para conocer en qué sentencias <strong>de</strong> cada función se gasta la<br />

mayor parte <strong>de</strong>l tiempo <strong>de</strong> cálculo. De esta forma se <strong>de</strong>scubren “cuellos <strong>de</strong> botella” y se pue<strong>de</strong>n<br />

<strong>de</strong>saroollar aplicaciones mucho más eficientes.<br />

Conviene <strong>de</strong>sarrollar los programas incrementalmente, comprobando cada función o<br />

componente que se aña<strong>de</strong>. De esta forma siempre se construye sobre algo que ya ha sido<br />

comprobado y que funciona: si aparece algún error, lo más probable es que se <strong>de</strong>ba a lo último que<br />

se ha añadido, y <strong>de</strong> esta manera la búsqueda <strong>de</strong> errores está acotada y es mucho más sencilla.<br />

Recuér<strong>de</strong>se que <strong>de</strong> ordinario el tiempo <strong>de</strong> corrección <strong>de</strong> errores en un programa pue<strong>de</strong> ser 4 ó 5<br />

veces superior al tiempo <strong>de</strong> programación. El <strong>de</strong>bugger es una herramienta muy útil a la hora <strong>de</strong><br />

acortar ese tiempo <strong>de</strong> puesta a punto.<br />

En este mismo sentido, pue<strong>de</strong> <strong>de</strong>cirse que pensar bien las cosas al programar (sobre una hoja<br />

<strong>de</strong> papel en blanco, mejor que sobre la pantalla <strong>de</strong>l PC) siempre es rentable, porque se disminuye<br />

más que proporcionalmente el tiempo <strong>de</strong> <strong>de</strong>puración y eliminación <strong>de</strong> errores.<br />

Otro objetivo <strong>de</strong> la programación <strong>de</strong>be ser mantener el código lo más sencillo y or<strong>de</strong>nado<br />

posible. Al pensar en cómo hacer un programa o en cómo realizar <strong>de</strong>terminada tarea es conveniente<br />

pensar siempre primero en la solución más sencilla, y luego plantearse otras cuestiones como la<br />

eficiencia.<br />

Finalmente, el código <strong>de</strong>be ser escrito <strong>de</strong> una manera clara y or<strong>de</strong>nada, introduciendo<br />

comentarios, utilizando líneas en blanco para separar las distintas partes <strong>de</strong>l programa, sangrando

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!