Saltar al contenido principal

# 11.8: Ejercicio- De la Línea de Comandos a un Script

$$\newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} }$$

$$\newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}}$$

$$\newcommand{\id}{\mathrm{id}}$$ $$\newcommand{\Span}{\mathrm{span}}$$

( \newcommand{\kernel}{\mathrm{null}\,}\) $$\newcommand{\range}{\mathrm{range}\,}$$

$$\newcommand{\RealPart}{\mathrm{Re}}$$ $$\newcommand{\ImaginaryPart}{\mathrm{Im}}$$

$$\newcommand{\Argument}{\mathrm{Arg}}$$ $$\newcommand{\norm}[1]{\| #1 \|}$$

$$\newcommand{\inner}[2]{\langle #1, #2 \rangle}$$

$$\newcommand{\Span}{\mathrm{span}}$$

$$\newcommand{\id}{\mathrm{id}}$$

$$\newcommand{\Span}{\mathrm{span}}$$

$$\newcommand{\kernel}{\mathrm{null}\,}$$

$$\newcommand{\range}{\mathrm{range}\,}$$

$$\newcommand{\RealPart}{\mathrm{Re}}$$

$$\newcommand{\ImaginaryPart}{\mathrm{Im}}$$

$$\newcommand{\Argument}{\mathrm{Arg}}$$

$$\newcommand{\norm}[1]{\| #1 \|}$$

$$\newcommand{\inner}[2]{\langle #1, #2 \rangle}$$

$$\newcommand{\Span}{\mathrm{span}}$$ $$\newcommand{\AA}{\unicode[.8,0]{x212B}}$$

$$\newcommand{\vectorA}[1]{\vec{#1}} % arrow$$

$$\newcommand{\vectorAt}[1]{\vec{\text{#1}}} % arrow$$

$$\newcommand{\vectorB}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} }$$

$$\newcommand{\vectorC}[1]{\textbf{#1}}$$

$$\newcommand{\vectorD}[1]{\overrightarrow{#1}}$$

$$\newcommand{\vectorDt}[1]{\overrightarrow{\text{#1}}}$$

$$\newcommand{\vectE}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash{\mathbf {#1}}}}$$

$$\newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} }$$

$$\newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}}$$

$$\newcommand{\avec}{\mathbf a}$$ $$\newcommand{\bvec}{\mathbf b}$$ $$\newcommand{\cvec}{\mathbf c}$$ $$\newcommand{\dvec}{\mathbf d}$$ $$\newcommand{\dtil}{\widetilde{\mathbf d}}$$ $$\newcommand{\evec}{\mathbf e}$$ $$\newcommand{\fvec}{\mathbf f}$$ $$\newcommand{\nvec}{\mathbf n}$$ $$\newcommand{\pvec}{\mathbf p}$$ $$\newcommand{\qvec}{\mathbf q}$$ $$\newcommand{\svec}{\mathbf s}$$ $$\newcommand{\tvec}{\mathbf t}$$ $$\newcommand{\uvec}{\mathbf u}$$ $$\newcommand{\vvec}{\mathbf v}$$ $$\newcommand{\wvec}{\mathbf w}$$ $$\newcommand{\xvec}{\mathbf x}$$ $$\newcommand{\yvec}{\mathbf y}$$ $$\newcommand{\zvec}{\mathbf z}$$ $$\newcommand{\rvec}{\mathbf r}$$ $$\newcommand{\mvec}{\mathbf m}$$ $$\newcommand{\zerovec}{\mathbf 0}$$ $$\newcommand{\onevec}{\mathbf 1}$$ $$\newcommand{\real}{\mathbb R}$$ $$\newcommand{\twovec}[2]{\left[\begin{array}{r}#1 \\ #2 \end{array}\right]}$$ $$\newcommand{\ctwovec}[2]{\left[\begin{array}{c}#1 \\ #2 \end{array}\right]}$$ $$\newcommand{\threevec}[3]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \end{array}\right]}$$ $$\newcommand{\cthreevec}[3]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \end{array}\right]}$$ $$\newcommand{\fourvec}[4]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}$$ $$\newcommand{\cfourvec}[4]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}$$ $$\newcommand{\fivevec}[5]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}$$ $$\newcommand{\cfivevec}[5]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}$$ $$\newcommand{\mattwo}[4]{\left[\begin{array}{rr}#1 \amp #2 \\ #3 \amp #4 \\ \end{array}\right]}$$ $$\newcommand{\laspan}[1]{\text{Span}\{#1\}}$$ $$\newcommand{\bcal}{\cal B}$$ $$\newcommand{\ccal}{\cal C}$$ $$\newcommand{\scal}{\cal S}$$ $$\newcommand{\wcal}{\cal W}$$ $$\newcommand{\ecal}{\cal E}$$ $$\newcommand{\coords}[2]{\left\{#1\right\}_{#2}}$$ $$\newcommand{\gray}[1]{\color{gray}{#1}}$$ $$\newcommand{\lgray}[1]{\color{lightgray}{#1}}$$ $$\newcommand{\rank}{\operatorname{rank}}$$ $$\newcommand{\row}{\text{Row}}$$ $$\newcommand{\col}{\text{Col}}$$ $$\renewcommand{\row}{\text{Row}}$$ $$\newcommand{\nul}{\text{Nul}}$$ $$\newcommand{\var}{\text{Var}}$$ $$\newcommand{\corr}{\text{corr}}$$ $$\newcommand{\len}[1]{\left|#1\right|}$$ $$\newcommand{\bbar}{\overline{\bvec}}$$ $$\newcommand{\bhat}{\widehat{\bvec}}$$ $$\newcommand{\bperp}{\bvec^\perp}$$ $$\newcommand{\xhat}{\widehat{\xvec}}$$ $$\newcommand{\vhat}{\widehat{\vvec}}$$ $$\newcommand{\uhat}{\widehat{\uvec}}$$ $$\newcommand{\what}{\widehat{\wvec}}$$ $$\newcommand{\Sighat}{\widehat{\Sigma}}$$ $$\newcommand{\lt}{<}$$ $$\newcommand{\gt}{>}$$ $$\newcommand{\amp}{&}$$ $$\definecolor{fillinmathshade}{gray}{0.9}$$

En este ejercicio, veremos cómo los comandos que escribas en la línea de comandos se pueden ejecutar desde un archivo de script. Para comenzar desde una pizarra en blanco, debe salir de EEGLAB, escribir clear all en la línea de comandos y relanzar EEGLAB. Asegúrese de que Chapter_11 es la carpeta actual en Matlab y abra el archivo llamado Script1.m haciendo doble clic en el nombre del panel Carpeta actual de Matlab. Este script consta de tres líneas, que abren un conjunto de datos, lo agregan a ALLEEG y vuelven a dibujar la GUI de Matlab.

Copia la primera línea del archivo en el portapapeles de tu computadora y luego pegarlo en la línea de comandos para ejecutar el comando. Puede determinar si ha cargado correctamente el conjunto de datos en la variable EEG mirando esta variable en el panel Matlab Workspace. Ahora pegue la segunda línea del archivo en la línea de comandos para agregar el dataset a ALLEEG (que puede verificar mirando ALLEEG en el panel Workspace). Ahora pega la tercera línea a la línea de comandos para actualizar la GUI. Se puede ver que el conjunto de datos se encuentra ahora en el menú Conjuntos de datos.

Echemos un vistazo más de cerca a la primera línea: EEG = pop_loadset ('filename', '1_N170.set'); Esto es igual que la primera línea del EEG.history en el ejercicio anterior, excepto que no especifica la ruta. Eso es porque el archivo 1_N170.set está en la carpeta actual (que puedes ver en el panel Carpeta actual de Matlab). Cuando abres un archivo pero no especificas una ruta, Matlab buscará primero en la carpeta actual. Si allí no encuentra el archivo, buscará toda la ruta de Matlab. Cuando guarda un archivo pero no especifica una ruta, Matlab lo guardará en la carpeta actual. En el siguiente ejercicio, veremos una forma robusta de especificar la ruta.

Primero, sin embargo, veremos cómo ejecutar un script real. En teoría, podrías simplemente poner un conjunto de comandos en cualquier archivo de texto y luego copiarlos y pegarlos en la línea de comandos. El archivo solo sería una forma de almacenar los comandos para que puedas reutilizarlos fácilmente. De hecho, a veces uso archivos de script para este propósito. Pero hay formas más fáciles de ejecutar los comandos en un archivo script. Lo más sencillo es simplemente hacer clic en el botón Ejecutar en el editor de scripts de Matlab. En mi versión de Matlab, es un triángulo verde (ver Captura de pantalla 11.3). Para ver esto en acción, salga de EEGLAB, escriba clear all, reinicie EEGLAB y haga clic en el botón Ejecutar en la ventana del editor para Script1.m. Si observa la variable EEG, la variable ALLEEG y el menú Conjuntos de datos, puede confirmar que cada línea del script se ha ejecutado. Es como si hubieras copiado las tres líneas en el portapapeles y las hubieras pegado en la línea de comandos (pero más rápido y más fácil).

Ahora veamos tres formas en las que podemos ejecutar una porción de un script en lugar de todo el asunto. El primero es simple: Copia el conjunto de líneas que te gustaría ejecutar en el portapapeles y pegarlas en la línea de comandos. Ya lo has hecho con líneas simples de código, pero puedes hacerlo con múltiples líneas.

Las otras dos formas son más fáciles de demostrar con un script que tiene varias partes distintas, así que cargue el script llamado Script2.m (por ejemplo, haciendo doble clic en este nombre en el panel Carpeta actual). Este script carga los datos de los Sujetos 1 y 2. Explicaré cómo funciona este guión en el próximo ejercicio. Por ahora, sólo veremos cómo ejecutar partes del mismo.

Comience saliendo de EEGLAB, escribiendo clear all y reiniciando EEGLAB. Ahora, entra en el editor de texto para Script2.m, y selecciona las primeras 7 líneas (arrastrando el mouse sobre esas líneas; ten en cuenta que puedes ver los números de línea a lo largo del lado izquierdo de la ventana). Ahora haga clic con el botón derecho (o control-clic) en el texto seleccionado y seleccione Evaluar selección en el menú que aparece. (También se puede ver un equivalente de teclado, que será más conveniente para utilizar este enfoque en el futuro.) Podrás ver que el conjunto de datos del Asunto 1 se ha cargado (por ejemplo, en la variable ALLEEG), pero aún no hemos actualizado la GUI de EEGLAB. Para ello, seleccione la última línea del script (línea 12, eeglab redraw) y ejecútelo (seleccionándolo, haciendo clic con el botón derecho y seleccionando Evaluar selección en el menú emergente). Ahora el conjunto de datos debería aparecer en el menú Conjuntos de datos.

Ahora seleccione y ejecute las líneas 9-12 para cargar el conjunto de datos para el Asunto 2 y actualizar la GUI. Ahora debería ver los conjuntos de datos de Subject 1 y Subject 2 en el menú Conjuntos de datos. Tenga en cuenta que no ejecutó las líneas del script en orden. Ejecutó la línea 12 después de las líneas 1-7 y luego nuevamente después de las líneas 9-11. Este enfoque te da mucha flexibilidad. Las líneas en un guión suelen necesitar ir en un orden particular para darle el resultado deseado. Por ejemplo, no puedes filtrar un archivo hasta después de haberlo cargado. Pero a veces solo estás usando el script como un lugar conveniente para almacenar un montón de comandos que podrías ejecutar en otro orden.

Ahora vamos a ver una forma más de ejecutar comandos desde un script, en el que dividimos el script en secciones y ejecutamos una sección a la vez. Si miras Script2.m, verás que algunas líneas comienzan con un símbolo%. Este símbolo indica que la línea es solo un comentario, no un código que se ejecutará. También puede poner un símbolo% después de un comando para proporcionar un comentario sobre ese comando.

También hay que señalar que algunas de las líneas comienzan con dos símbolos% consecutivos. Esto indica el inicio de una nueva sección. Si hace clic en cualquier parte dentro de una sección, el color de fondo de esa sección cambia. La captura de pantalla 11.4 muestra cómo se ve cuando hago clic en la última sección del script. Una vez que hayas resaltado una sección de esta manera, puedes ejecutar esa sección de código haciendo clic en el botón Ejecutar sección en la barra de herramientas cerca de la parte superior de la ventana del editor de scripts.

This page titled 11.8: Ejercicio- De la Línea de Comandos a un Script is shared under a CC BY 4.0 license and was authored, remixed, and/or curated by Steven J Luck directly on the LibreTexts platform.