Saltar al contenido principal
LibreTexts Español

1.9: Comprender el camino de Matlab

  • Page ID
    151390
  • \( \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}\)

    Ahora que has tenido la oportunidad de jugar un poco con EEGLAB y ERPLAB, quiero discutir un concepto de vital importancia, el PATH. Muchos de los problemas que encuentran los principiantes de Matlab son el resultado de no comprender y establecer adecuadamente el PATH. Si ya estás bastante familiarizado con el PATH de Matlab, puedes saltarte esta sección.

    En pocas palabras, el PATH de Matlab define dónde buscará código y otros archivos. Cuando escribe eeglab en la ventana de comandos de Matlab para iniciar EEGLAB, la única razón por la que Matlab sabe dónde encontrar el código EEGLAB en su computadora es que usted (o alguien) establece la PATH para incluir la ubicación de los archivos que contienen el código EEGLAB. Y si estás leyendo esta sección porque tienes problemas para que EEGLAB funcione, es muy probable que tengas un problema PATH.

    Como sabes, el sistema de archivos de tu computadora se divide en un conjunto de carpetas (también llamadas directorios). Las carpetas están organizadas jerárquicamente: Tienes una carpeta principal para cada unidad, y esas carpetas contienen subcarpetas, que contienen subcarpetas, etc. La ubicación de un archivo se puede expresar de manera concisa como algo así como D:\books\ERP_Analysis_Book\Exercises\Chapter_2\1_N400_erp.erp (en un Windows system) o /Usuarios/Suerte/Documentos/libros/erp_analysis_book/ejercicios/chapter_2/1_n400_erp.erp (en un sistema Mac o Linux). Para complicar la vida, DOS y Windows usan barras inversales para separar los nombres de las carpetas, mientras que Mac y Linux usan barras inclinadas hacia adelante.

    La ubicación de un solo archivo, cuando se expresa de esta manera, es la ruta al archivo. Pero tenga en cuenta que estoy usando minúsculas para referirme a la ruta de un solo archivo. Utilizo mayúsculas para referirme a PATH de Matlab, que consiste en una lista de múltiples rutas. Esta lista define dónde buscará Matlab código y otros archivos. Pero tenga en cuenta: Matlab buscará primero en la carpeta actual (indicada por la flecha azul en la Figura 1.2) antes de buscar en las carpetas definidas por el PATH.

    Echemos un vistazo al PATH en tu computadora. En la ventana principal de Matlab, haga clic en el icono etiquetado Establecer ruta (con un círculo en rojo Figura 1.2, pero tenga en cuenta que podría estar en otro lugar de su versión de Matlab). Esto debería provocar que aparezca una nueva ventana, como la que se muestra en la parte inferior de la Figura 1.2.

    Deberías ver la carpeta principal de EEGLAB en el PATH. Si recientemente instaló EEGLAB, debería estar en la parte superior. Si tiene problemas para lanzar EEGLAB, asegúrese de tener la ruta EEGLAB en su PATH. Para agregar la carpeta EEGLAB a su PATH, haga clic en Agregar carpeta..., navegue hasta la ubicación de la carpeta EEGLAB que descargó al instalar EEGLAB y agréguela al PATH. También es posible que la ruta sea incorrecta (por ejemplo, porque la carpeta se movió después de que se configuró el PATH). Si ya tiene EEGLAB en su PATH pero no sabe cómo verificar que la ruta es correcta, puede eliminar la ruta EEGLAB existente (incluyendo todas las subcarpetas) usando el botón Eliminar y luego agregar la ruta nuevamente usando Agregar carpeta...

    Path.png
    Figura 1.2. Estableciendo el PATH en Matlab. Para establecer el PATH, haga clic en el icono Establecer ruta en la ventana principal de Matlab (con un círculo en rojo aquí). Esto abre el cuadro de diálogo. Tenga en cuenta que la carpeta actual está indicada por la flecha azul. Puede hacer clic en Agregar carpeta... para agregar una nueva carpeta a la PATH. También puedes eliminar elementos del PATH usando el botón Quitar. Asegúrese de hacer clic en Guardar para que el PATH se guarde para futuras sesiones de Matlab. Tenga en cuenta que esto podría verse diferente en su computadora.

    Cuando haya terminado de actualizar el PATH, haga clic en Guardar y luego en Cerrar. Si haces clic en el botón Cerrar sin guardar, el PATH actualizado funcionará, pero se olvidará cuando salgas de Matlab. Debe hacer clic en Guardar antes de hacer clic en Cerrar si desea que Matlab recuerde la ruta cuando la inicie nuevamente en el futuro.

    Ahora hablemos con un poco más de detalle sobre cómo funciona el PATH. Un paquete complicado como EEGLAB o ERPLAB se divide en toneladas de archivos individuales (a menudo llamados archivos.m porque el nombre del archivo termina en .m). Cuando escribe eeglab en la ventana de comandos de Matlab, Matlab busca en la ruta de un archivo llamado matlab.m, y luego ejecuta el código en este archivo. El código en el archivo eeglab.m llama a muchas otras funciones, como eeg_checkset (). El código para una función dada se almacena normalmente en un archivo.m separado. Cuando Matlab necesita llamar a eeg_checkset (), por lo tanto lo busca en un archivo llamado eeg_checkset.m. ¿Dónde busca Matlab para encontrar este archivo? En las carpetas definidas por el PATH, claro. El archivo eeg_checkset.m se encuentra realmente en una subcarpeta dentro de la carpeta principal EEGLAB. Es por eso que en realidad hay muchas subcarpetas EEGLAB en su PATH.

    Cuando agregas una nueva carpeta a la PATH, normalmente harías clic en Agregar con subcarpetas... para asegurarte de que todas las subcarpetas dentro de la nueva carpeta estén en tu ruta. Sin embargo, EEGLAB es lo suficientemente inteligente como para que agregue automáticamente las subcarpetas cuando haga clic en Agregar carpeta...

    Aquí está la conclusión clave de lo que hemos discutido hasta ahora: Casi todos los comandos y funciones en Matlab se almacenan en un archivo.m, y cuando intentas ejecutar un comando o función, Matlab busca en el PATH para encontrarlo. Si Matlab te dice que no puede encontrar una función o un archivo.m, esto casi siempre significa que no tienes el PATH configurado correctamente.

    Otro problema que puede surgir es que puede haber dos archivos.m diferentes con el mismo nombre en tu ruta. Por ejemplo, si instala una nueva versión de EEGLAB en su computadora y agrega la carpeta que contiene esta versión a su PATH sin eliminar la ruta anterior, Matlab podría ejecutar la versión incorrecta. Entonces, asegúrate de limpiar la carpeta antigua (y cualquier subcarpeta) usando el botón Quitar al instalar una nueva versión.

    También es posible que tengas otro paquete (por ejemplo, FieldTrip o PsychToolbox) en tu PATH que defina una función con el mismo nombre que una de las funciones de EEGLAB. Por ejemplo, tanto EEGLAB como FieldTrip podrían tener una función llamada PlotEEG Waveforms, que se almacenaría en un archivo llamado PlotEgwaveforms.m. Entonces tendrías dos archivos idénticos en tu PATH. ¿Qué archivo utilizará Matlab cuando intente llamar a la función PlotEgwaveForms? La respuesta es simple: Busca en la carpeta en el orden en que aparecen en el PATH, y deja de buscar una vez que encuentra una coincidencia.

    Otro problema común es que la ruta a una carpeta puede tener uno o más espacios, como D:\books\ERP Analysis Book\ Exercises. Eso no suele ser un problema, pero a veces Matlab interpretará tal camino como tres cosas separadas (D:\books\ERP y Análisis y Libro\ Ejercicios). Si esto sucede, normalmente puedes resolver el problema ya sea usando guiones bajos en lugar de espacios o encerrando la ruta entre comillas simples (por ejemplo, 'D:\books\ERP Analysis Book\ Ejercises').

    Si desea más información, la documentación en línea de Matlab proporciona una descripción detallada de cómo funciona PATH.


    This page titled 1.9: Comprender el camino de Matlab 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.