Menú
Está libre
registro
hogar  /  Internet/ Abrir archivo matlab. Cómo instalar MATLAB correctamente (incluido el servidor de computación distribuida MATLAB)

Abra el archivo matlab. Cómo instalar MATLAB correctamente (incluido el servidor de computación distribuida MATLAB)

Los archivos son objetos bastante comunes en el sistema MATLAB. Algunos de los tipos de archivos ya se han analizado en los capítulos anteriores. Esta lección cubre las propiedades de los archivos que son independientes de su tipo y se aplican a cualquier archivo.

Expediente generalmente alguna recopilación de datos, unidos por un nombre. El tipo de archivo suele estar determinado por su extensión. Consideramos el archivo como un todo, aunque físicamente en el disco puede estar representado por varias áreas, dicen que en este caso el archivo está fragmentado.

Antes de usar cualquier archivo, debe abierto, y al final de su uso - cerrado... Se pueden abrir y leer muchos archivos al mismo tiempo. Consideremos los comandos para abrir y cerrar archivos.

  • Mando nombre abierto, donde el nombre debe contener una matriz de caracteres o una variable simbólica, abre archivos según el análisis del parámetro de nombre y la extensión en el nombre del nombre:
    • variable- abre una matriz nombrada por su nombre en el Editor de matrices;
    • .estera- abre el archivo, guarda las variables en la estructura en el área de trabajo;
    • .higo- lo abre en el Editor de propiedades;
    • .metro- abre el archivo-m en el editor-depurador;
    • .mdl- abre el modelo en Simulink;
    • .R- abre, si lo hay, un archivo-m con el mismo nombre;
    • .html- abre Documento HTML en el navegador de ayuda.

Si existen archivos con la extensión en la ruta de MATLAB, entonces el archivo devuelto por el comando cuyo nombre se abre, si no, entonces el archivo de sistema de archivos... Si el archivo no tiene una extensión de nombre, se abre con el programa cuyo formato de archivo habría sido detectado por la función which ("nombre de archivo"). De forma predeterminada, se llama a openother para todos los archivos con terminaciones distintas de las enumeradas encima. Open llama a las funciones orepxxx, donde xxx es la extensión del archivo. Las excepciones son las variables del espacio de trabajo para las que se llama a openvar y los gráficos para los que se llama a openim. Al crear archivos t llamados orepxxx, los usuarios pueden cambiar el manejo de los archivos y agregar nuevas extensiones a la lista. Los archivos abiertos con open deben cerrarse desde los editores llamados por onxxx.

  • = uigetfile (FILTERSPEC. Título)... Abre un cuadro de diálogo llamado Título y un filtro FILTERSPEC (por ejemplo, una matriz de celdas que contiene extensiones de archivo) y devuelve el archivo seleccionado por el usuario y la ruta al mismo. Devuelve FILENAME = 0 si el archivo no existe o si el usuario hizo clic en Cancelar. = uigetfile (FILTERSPEC, Título. X. Y) coloca el cuadro de diálogo en el punto X, Y (coordenadas en píxeles).

Uigetfile ("*. M; *. Fig; *. Mat: *. Mdl", "Todos los archivos MATLAB (* .m, * .fig, * .mat. * .Mdl)") ...

  • = uiputfile (FILTERSPEC. TITLE) guarda el archivo en un cuadro de diálogo controlado por el usuario. Los parámetros son los mismos que en la función uigetfile.
  • Mando ui abierto abre un diálogo, y si el usuario ha seleccionado un archivo con una extensión conocida, lo llama usando open, o si el nombre del archivo tiene una extensión desconocida, entonces se llama a uigetfile. Los argumentos de entrada a uiopen pueden ser mat lab, load, figure, simulink, editor. Sin argumentos de entrada o con un argumento de entrada matlab, el cuadro de diálogo le pide que seleccione * .m, * .fig, * .mat, * .mdl (si Simulink está instalado), * .cdr (si el flujo de estado está instalado), * .rtw, *. tmf, * .tlc, * .c, * .h, * .ads, * .adb (si está instalado Real-Time Workshop). Con el argumento de carga - * .mat. Con el argumento figura, se ofrecen * .fig; tinta simultánea - * .mdl, editor - * .m, * .mdt * .cdr, * .rtw, * .tmf, * .tlc, * .c, * .h, * .ads, * .adb.

Figura abierta

  • Mando uiload abre un archivo en un diálogo controlado por el usuario usando el comando carga.

Función importación de interfaz de usuario Lanza Asistente de importación(Asistente de importación), que importa desde un archivo en la carpeta actual o en el portapapeles de Windows. Ella coincide con la elección Datos de importacion del menú Expediente o elección Pegado especial del menú Editar MATLAB.

  • importación de interfaz de usuario (NOMBRE DE ARCHIVO)- inicia el Asistente de importación abriendo el NOMBRE DE ARCHIVO. El asistente de importación muestra los datos para una vista previa. Los datos y su representación como variables de MATLAB aparecen en la ventana de vista previa. Los datos, el texto y los encabezados reales están representados por diferentes variables de MATLAB. Para los datos ASCII, debe asegurarse de que el Asistente de importación reconozca los delimitadores de columna. Por sí solo, solo puede reconocer una tabulación, un espacio, una coma o un punto y coma. Necesitas hacer clic en el botón próximo y en la siguiente ventana, confirme la selección del separador realizada por el asistente, o seleccione Otro e ingrese cualquier separador.
  • importación de interfaz de usuario ("-file")- muestra en primer lugar el cuadro de diálogo de selección de archivos.
  • ui import ("-pastespecial")- muestra en primer lugar el contenido del portapapeles de Windows para obtener una vista previa.
  • S = importación de interfaz de usuario (...) almacena las variables resultantes como campos de la estructura S.
  • Mando uisave- guardado controlado por el usuario (el comando de guardado se describe en la lección 2) con un diálogo de Windows.
  • Función guardar como- guarda un dibujo o modelo de Simulink en el formato deseado en un medio de almacenamiento o en un dispositivo habilitado para impresión.
  • Función saveas (H, "NOMBRE DE ARCHIVO")- guarda los datos de acuerdo con el comando de los gráficos descriptores H en el archivo NOMBRE DE ARCHIVO. El formato de archivo está determinado por la extensión del nombre NOMBRE DE ARCHIVO.
  • Función saveas (H. "NOMBRE DE ARCHIVO". "FORMATO")- realiza lo mismo, pero con el parámetro FORMAT (el formato se especifica de la misma manera que la extensión del nombre del archivo y puede diferir de ella). FORMAT tiene prioridad sobre la extensión del nombre de archivo. Parámetros de función:
    • "higo"- guardar la figura (gráfico) en un archivo fig binario;
    • "metro" o "mfig"- guarde la figura en un archivo fig binario y cree un archivo m para cargarlo;
    • "mmat"- guarde el dibujo en un archivo m como una secuencia de comandos de creación de dibujos. Es posible que no admita las funciones gráficas más recientes.

Saveas (mcd "salida", "fig") saveas (mcd, "salida", "bmp")

Comando o función Eliminar elimina un archivo u objeto gráfico.

Lección número 19.

Trabajando con archivos

    Abrir y cerrar archivos

    Operaciones de archivos binarios

    Operaciones de archivos formateados

    Posicionamiento de archivos

    Archivos especializados

Los archivos son objetos bastante comunes en el sistema MATLAB. Algunos de los tipos de archivos ya se han analizado en los capítulos anteriores. Esta lección cubre las propiedades de los archivos que son independientes de su tipo y se aplican a cualquier archivo.

Abrir y cerrar archivos

Expediente generalmente alguna colección de datos, unidos por un nombre. El tipo de archivo suele estar determinado por su extensión. Consideramos el archivo como un todo, aunque físicamente en el disco puede estar representado por varias áreas, dicen que en este caso el archivo está fragmentado.

Antes de usar cualquier archivo, debe abierto, y al final de su uso - cerrado. Se pueden abrir y leer muchos archivos al mismo tiempo. Consideremos los comandos para abrir y cerrar archivos.

    El comando de nombre abierto, donde el nombre debe contener una matriz de caracteres o una variable simbólica, abre archivos según el análisis del parámetro de nombre y la extensión en el nombre del nombre:

    • variable: abre una matriz nombrada por su nombre en el Editor de matrices;

      Mat: abre un archivo, guarda variables en una estructura en el espacio de trabajo;

      Fig: lo abre en el Editor de propiedades;

      M: abre un archivo m en el editor-depurador;

      Mdl: abre el modelo en Simulink;

      R: abre, si lo hay, un archivo-m con el mismo nombre;

      Html: abre un documento HTML en el navegador de ayuda.

Si existen archivos con la extensión en la ruta de MATLAB, entonces se abre el archivo devuelto por el comando de qué nombre; de ​​lo contrario, se abre el archivo del sistema de archivos. Si el archivo no tiene una extensión de nombre, lo abre el programa cuyo formato de archivo habría sido detectado por la función igpsiGname ") De forma predeterminada, para todos los archivos con terminaciones distintas de las enumeradas anteriormente, se llama a openother. Llamadas abiertas las funciones orepxxx, donde xxx es la extensión del archivo. Las excepciones son las variables del espacio de trabajo, para las cuales se llama openvar, y los gráficos, para los cuales se llama openim. Al crear archivos t llamados orepxxx, los usuarios pueden modificar el manejo de archivos y agregar nuevas extensiones de la lista. Los archivos abiertos con open deben cerrarse desde los editores llamados por onxxx.

    Uigetfile (FILTERSPEC. Título). Abre un cuadro de diálogo llamado Título y un filtro FILTERSPEC (por ejemplo, una matriz de celdas que contiene extensiones de archivo) y devuelve el archivo seleccionado por el usuario y la ruta al mismo. Devuelve FILENAME = 0 si el archivo no existe o si el usuario hizo clic en Cancelar. = uigetfile (FILTERSPEC, Título. X. Y) coloca el cuadro de diálogo en el punto X, Y (coordenadas en píxeles).

Ejemplo:

Uigetfile ("*. M; *. Fig; *. Mat: *. Mdl". "Todos los archivos MATLAB (* .m, * .fig, * .mat. * .Mdl)": ...

    Uiputfile (FILTERSPEC. TITLE) guarda el archivo en un diálogo controlado por el usuario. Los parámetros son los mismos que en la función uigetfile.

    El comando ui open abre un cuadro de diálogo, y si el usuario ha seleccionado un archivo con una extensión conocida, lo llama usando open, o si el nombre del archivo tiene una extensión desconocida, se llama a uigetfile. Los argumentos de entrada a uiopen pueden ser mat lab, load, figure, simulink, editor. Sin argumentos de entrada o con un matlab de argumento de entrada, el cuadro de diálogo le pide que seleccione * .m, * .fig, * .mat,* .mdl (si Simulink está instalado), *. cdr (si se establece el flujo de estado), * .rtw, * .tmf, * .tlc, * .c, * .h, * .ads, * .adb (si está instalado Real-Time Workshop). Con el argumento de carga - * .mat. Con el argumento figura, se ofrecen * .fig; tinta simultánea - * .mdl, editor - * .m, * .mdt * .cdr, * .rtw, * .tmf, * .tlc, * .c, * .h, * .ads, * .adb.

Ejemplo:

uiopen figura.

    El comando uiload abre un archivo en un cuadro de diálogo controlado por el usuario mediante el comando de carga.

La función de importación de la interfaz de usuario inicia el Asistente de importación, que importa desde un archivo en la carpeta actual o en el portapapeles de Windows. Corresponde a elegir Importar datos en el menú Archivo o elegir Pegado especial en el menú Edición de MATLAB.

    Importación de interfaz de usuario (NOMBRE DE ARCHIVO): inicia el Asistente de importación al abrir NOMBRE DE ARCHIVO. El asistente de importación muestra los datos para una vista previa. Los datos y su representación como variables de MATLAB aparecen en la ventana de vista previa. Los datos, el texto y los encabezados reales están representados por diferentes variables de MATLAB. Para los datos ASCII, debe asegurarse de que el Asistente de importación reconozca los delimitadores de columna. Por sí solo, solo puede reconocer una tabulación, un espacio, una coma o un punto y coma. Debe hacer clic en el botón Siguiente y, en la siguiente ventana, confirmar la selección del delimitador realizada por el Asistente o seleccionar Otro e ingresar cualquier delimitador.

    ui import ("-f i le"): primero muestra el cuadro de diálogo de selección de archivos.

    ui import ("-pastespecial"): en primer lugar, muestra el contenido del portapapeles de Windows para obtener una vista previa.

    S = ui import (...) almacena las variables resultantes como campos de la estructura S.

    El comando uisave es un guardado controlado por el usuario (el comando de guardado se describe en la lección 2) con un diálogo de Windows.

    Función Saveas: guarda un dibujo o modelo de Simulink en el formato deseado en un medio de almacenamiento o en un dispositivo habilitado para impresión.

    La función saveas (H, "FILENAME") - guarda los datos de acuerdo con el comando de gráficos del descriptor H en el archivo FILENAME. El formato de archivo está determinado por la extensión del nombre NOMBRE DE ARCHIVO.

    La función saveas (H. "FILENAME". "FORMAT") - hace lo mismo, pero con el parámetro FORMAT (el formato se especifica de la misma manera que la extensión del nombre del archivo y puede diferir de ella). FORMAT tiene prioridad sobre la extensión del nombre de archivo. Parámetros de función:

Ejemplos:

saveas (mcd. "salida", "fig") saveasCgcf, "salida", "bmp")

El comando o función de eliminación elimina un archivo u objeto gráfico.

    Eliminar nombre de archivo elimina el archivo en la carpeta actual. Puede ser usado *. Uso preferido con una entrada en forma de función de eliminación ("archivo mw") cuando el nombre del archivo es una cadena.

    delete (H) borra un objeto gráfico con descriptor H. Si este objeto es una ventana, entonces se cierra de antemano.

    La función cerrar (H) cierra solo las ventanas gráficas. Para cerrar archivos, use el comando f close.

Para escribir archivos en el disco, use el comando save, que se usa en formas bastante obvias:

ahorrar

guardar nombre de archivo guardar nombre de archivo varl var2 ... guardar ... opción guardar ("nombre de archivo", ...)

En consecuencia, el comando de carga se usa para leer archivos desde el disco:

carga

cargar nombre de archivo cargar nombre de archivo X Y Z

cargar nombre de archivo -ascii cargar nombre de archivo -mat

En estos comandos, el nombre del archivo se especifica de acuerdo con las reglas aceptadas en los sistemas operativos de la clase MS-DOS. Estos comandos suelen estar duplicados por los botones de la barra de herramientas y el explorador de archivos.

Operaciones de archivos binarios

Binario, o binario, se denominan archivos, cuyos datos son códigos de máquina. Las operaciones básicas con dichos códigos se enumeran a continuación.

    fopen (nombre de archivo, permiso): abre un archivo con el nombre de archivo y el parámetro especificado en el permiso, y devuelve el identificador fid con el valor: 0: lectura del teclado (el permiso se establece en "r"); 1 - salida a la pantalla (el permiso se establece en "a"); 2 - visualización de un mensaje de error (el permiso se establece en "a"); -1 - falla al abrir el archivo con salida mensajes de mensaje sobre el tipo de error. El fid se usa a menudo como argumento en otras funciones y programas de E / S. El nombre de archivo nombre de archivo puede contener la ruta al archivo.

Si el archivo para abrir para lectura no se encuentra en el directorio actual, entonces la función fopen busca el archivo en la ruta especificada en MATLAB.

El parámetro de permiso puede tomar uno de los siguientes valores básicos (ver el sistema de ayuda para otros):

    "r" - archivo abierto para lectura (predeterminado);

    "r +" - archivo abierto para lectura y escritura;

    "w": elimina el contenido de un archivo existente o crea uno nuevo y ábrelo para escribirlo;

    "a": crea y abre un archivo nuevo o abre uno existente pararegistros adjuntos al final del archivo.

Agregar una "b" a esta línea (por defecto) le dice al sistema que abra el archivo en modo binario.

Agregar "t" en lugar de b a esta línea, por ejemplo "rt", en los sistemas operativos que distinguen entre archivos de texto y binarios, indica al sistema que abra el archivo en modo texto. Por ejemplo, en todas las versiones de MATLAB para Windows / MS-DOS y VMS, no puede abrir Archivo de texto sin el parámetro "rt". Cuando ingresa archivos usando fopen en modo texto, se eliminan todos los retornos de carro antes del carácter de nueva línea.

    Fopentfilename.permission, format): abre un archivo como se describe anteriormente, devolviendo una ID de archivo y un mensaje. Además, el valor del parámetro de formato le permite determinar con precisión el formato del número. Hay 8 formatos posibles, cuya descripción se puede encontrar en el sistema de ayuda. En particular, la cadena de formato puede ser "nativo" (el formato de la computadora en la que está instalado el sistema), "vax", "sgau" (computadoras VAX y Cray), etc.

Ciertas llamadas a fread o fwrite pueden anular el formato numérico especificado en la llamada a fopen.

    fids = fopen С all ") - devuelve una cadena de vectores que contiene identificadores de todos los archivos abiertos, excluyendo los flujos estándar О, 1 y 2. El número de elementos vectoriales es igual al número de archivos abiertos por el usuario;

    Fopen (fid): devuelve el nombre de archivo completo, la cadena .permission y la cadena de formato. Si se utilizan valores fid no válidos, se devuelven cadenas vacías para todos los argumentos de salida.

El comando fclose cierra el archivo. Tiene las siguientes opciones.

    Status = fclose (fid): cierra el archivo si está abierto. Devuelve el estado del estado del archivo, igual a 0 si el cierre fue exitoso y -1 en caso contrario. El argumento fid es el identificador asociado con el archivo abierto (consulte la función fopen para obtener una descripción más detallada);

    status = fclose ("all") cierra todos los archivos abiertos. Devuelve 0 en caso de éxito y -1 en caso contrario.

Un ejemplo de apertura y cierre de un archivo:

"Fid = fopen (" c: \ ex "." A + ") fid = 4

»Fcerrar (4)

ans =

    Fread (fid, tamaño, precisión): lee datos binarios del archivo dado y los coloca en la matriz A. El recuento de argumentos de salida contiene el número de elementos leídos correctamente. El valor fid es un número entero devuelto por la función fopen; size es un argumento que especifica la cantidad de datos a leer. Si no se especifica el tamaño, f read lee los datos hasta el final del archivo.

Se utilizan los siguientes parámetros de tamaño:

    n - lee n elementos en un vector de columna;

    Lee tantos elementos como sea necesario para llenar la matriz thp.

El llenado se realiza por columnas. Si hay pocos elementos en el archivo, la matriz se rellena con ceros. Si la lectura llega al final del archivo sin llenar la matriz del tamaño requerido, entonces la matriz se rellena con ceros. Si ocurre un error, la lectura se detiene en el último valor leído. El parámetro de precisión es una cadena que determina la precisión numérica de los valores de lectura, controla el número de bits leídos para cada valor e interpreta estos bits como un entero, punto flotante o como un carácter.

    Fread (fid, size.precision, skip): incluye un argumento de omisión arbitrario que especifica el número de bytes que se deben omitir después de cada lectura. Esto puede resultar útil al extraer datos en áreas no contiguas de registros de longitud fija. Si la precisión está en un formato de bits como "bitN 1 o" ubitN ", se especifica el valor de omisión ~ bits. Se puede encontrar una lista extensa de posibles valores de precisión en el sistema de ayuda de MATLAB;

    count = fwrite (fid, A, precision): escribe los elementos de la matriz A en un archivo, representándolos con una precisión especificada. Los datos se escriben en el archivo columna por columna y el argumento de salida del recuento contiene el número de elementos escritos correctamente. El valor fid es un número entero de la función f open. Agrega retornos de carro antes del comienzo de una nueva línea;

    count = fwrite (fid.A, precision, skip): hace lo mismo, pero incluye un argumento de omisión arbitrario que especifica el número de bytes que se deben omitir antes de cada escritura. Esto es útil al insertar datos en áreas no contiguas en registros de longitud fija. Si la precisión está en un formato de bits como "bitN" o "ubitN", el valor de salto se especifica en bits.

Ejemplos:

»Fid = fopen (" c: \ prim "," a + ")

Fid =

»A = magia (7)

A =

30

39

48

1

10

19

28

38

47

7

9

18

27

29

46

6

8

17

26

35

37

5

14

16

25

34

36

45

13

15

24

33

42

44

4

21

23

32

41

43

3

12

22

31

40

49

2

11

20

»Count = fwrite (j.A)

Count =

»Estado = fclose (3)

Estado =

"Defensor

Fopen ("c: \ prim". "R")

Fid =

"= Fread (3.)

30

39

48

1

10

19

28

38

47

7

9

18

27

29

46

6

8

17

26

35

37

5

14

16

25

34

36

45

13

15

24

33

42

44

4

21

23

32

41

43

3

12

22

31

40

49

2

11

20

cuenta =

Operaciones de archivos formateados

Los archivos que contienen datos formateados se denominan archivos formateados. A continuación se muestran las funciones que se utilizan para trabajar con dichos archivos.

    Line = fgetl (fid) - Devuelve una cadena de archivo con identificador fid con el carácter de final de línea eliminado. Si fgetl detecta el final del archivo, devuelve -1 (consulte fopen para obtener más información). Descripción detallada defensor);

    Line = f gets (fid): devuelve la línea del archivo con el identificador fid sin eliminar el carácter de final de línea. Si fgets detecta el final del archivo, devuelve -1;

    Line = fgets (fid.nchar): no devuelve más de nchar de los primeros caracteres de la línea. No se leen caracteres adicionales después del carácter de final de línea o de final de archivo (consulte los ejemplos de la función fscanf);

    Count = fprintf (fid.format, A ....) - formatea los datos contenidos en la parte real de la matriz A, bajo el control de la cadena de formato y los escribe en un archivo con el identificador fid. La función fprintf devuelve el número de bytes escritos. El valor fid es un número entero devuelto por la función fopen.

Si omite el identificador fid en la lista de argumentos de la función fprintf, la salida se imprimirá en la pantalla, al igual que cuando se usa la salida estándar (fid = l).

    fprintf (formato, A ....): la grabación se realiza en un dispositivo estándar: una pantalla (pero no en un archivo). La cadena de formato define el sistema numérico, la alineación, los dígitos significativos, el ancho del campo y otros atributos del formato de salida. Puede contener letras regulares del alfabeto junto con calificadores, caracteres de alineación, etc.

Cuadro 19.1. Caracteres especiales en cadenas de formato

Símbolo

Descripción

\ n

Nueva línea

\ t

Pestaña horizontal

\ B

Retroceder un carácter

\ r

Retorno de carro

\ f

Nueva pagina

\\

Barra invertida

\" o "

Una frase

%%

Por ciento

La función fprintf se comporta como la función fprintf O equivalente a ANSI C, con algunas excepciones y extensiones. Mesa 19.1 se describen Símbolos especiales que se encuentra en la cadena de formato. Para mostrar datos numéricos o de caracteres en una cadena de formato, utilice especificadores, enumerados en la tabla. 19.2.

Cuadro 19.2. Especificadores de formato de salida

El especificador

Descripción

% D Notación decimal (con signo)
*con Carácter único

% e

Notación exponencial de números usando la "e" en la parte inferior registro, por ejemplo 3.1415e + 00

Notación exponencial de números usando la "E" en la parte superior registro, por ejemplo 3.1415Е + 00

% f

Sistema de notación de punto fijo

% g

El más compacto de% e y% f. Los ceros finales no se muestran

% G

Igual que% d, pero usa mayúsculas para "E"

% O

Notación octal (sin firmar)

% s

Cadena de caracteres

% u

Notación decimal (sin firmar)

% X


Notación hexadecimal con caracteres en minúscula ("a" ... "f")

% X

Notación hexadecimal con caracteres en mayúscula ("A" ... "F")

Se pueden insertar caracteres adicionales entre el signo de porcentaje y la letra en el especificador. Su significado se explica en la Tabla. 19.3.

Cuadro 19.3. Opciones de especificador de formato

Símbolo

Descripción

Ejemplo

Signo menos" (-)

Argumentos convertidos que justifican a la izquierda

% -5,2d

Signo más (+)

Imprima siempre un signo de número (+ o -)

% + 5.2d

Cero (0)

Relleno con ceros en lugar de espacios

% 05,2d

Números

Especifica el número mínimo de caracteres que se imprimirán.

% 6f

Dígitos (después del punto)

El número después del punto determina el número de caracteres impresos.a la derecha del punto decimal

% 6.2f

    A = fscanf (fid, formato): lee todos los datos del archivo con el identificador, fid, los convierte de acuerdo con el valor del parámetro de formato y los devuelve como una matriz A. El valor del identificador fid es un número entero devuelto por la función fopen. El parámetro de formato es una cadena que especifica el formato de los datos que se leerán;

    Fscanf (fid.format, size): lee la cantidad de datos especificada por el parámetro de tamaño, la convierte de acuerdo con el parámetro de formato y devuelve, junto con el número de elementos leídos correctamente, contar. El parámetro de tamaño es un argumento arbitrario que especifica la cantidad de datos a leer. Los siguientes valores son válidos:

    • inf - leer elementos hasta el final del archivo y colocarlos en un vector de columna que contiene el mismo número de elementos que en el archivo;

      Lee tantos elementos como sea necesario para llenar la matriz de tamaño thp. El llenado se realiza por columnas. El valor n (¡pero no!) Puede tomar el valor Inf.

La cadena de formato consta de caracteres ordinarios y / o especificadores. Los especificadores indican el tipo de datos leídos e incluyen el carácter %, opción de ancho de campo y caracteres de formato. Los posibles caracteres de formato se enumeran en la tabla. 19.4.

Cuadro 19.4. Caracteres de formato utilizados por la función fscanf

Símbolo

Descripción

Una secuencia de caracteres; parámetro de ancho de campo determina el número de caracteres leídos

% D

Decimal

% e,% f,% g

Número de coma flotante

% I

Entero con signo

% o

Número octal firmado

% s

Una secuencia de caracteres que no son espacios en blanco

% u

Entero decimal con signo

% X

Entero hexadecimal con signo

[...]

Secuencia de personajes

Entre el símbolo % y el carácter de formato puede insertar los siguientes caracteres:

    Un asterisco (*) significa que no es necesario almacenar el valor correspondiente en la matriz de salida;

    Una cadena de números establece el ancho máximo del campo;

    La letra indica el tamaño del objeto resultante: h para un entero corto (por ejemplo,% n d), 1 para un entero largo (por ejemplo,% ld) o para un número de coma flotante de doble precisión (por ejemplo, % lg ).

Ejemplos:

"X = 0: pi / 10: pi: y-;

»Fid = fopent" c: \ sin.txt ". V);

»Fprintf (fid." X5.3f * 10.6f \ n ".y): fclose (fid);

0.000 0.000000

0.314 0.309017

0.628 0.587785

0.942 0.809017

1.257 0.951057

1.571 1.000000

1.885 0.951057

2.199 0.809017

2.513 0.587785

2.827 0.309017

3.142 0.000000

»Fid = fopen (" c: \ sin.txt "." R ");

»Q = fscanf (fid." * G ".):

"Q"

ans =

0.3140 0.3090

0.6280 0.5878

0.9420 0.8090

1.2570 0.9511

1.5710 1.0000

1.8850 0.9511

2.1990 0.8090

2.5130 0.5878

2.8270 0.3090

»Fgetl (fid)

Ans =

3.142 0.000000

»Fgets (fid)

Ans =

»Fclose (fid)

Ans =

Posicionamiento de archivos

Cuando los archivos se leen y escriben, se representan convencionalmente como datos lineales, como grabar en una cinta magnética continua. El lugar desde el que se realiza la lectura este momento(o la posición desde la cual se realiza la grabación) está determinada por un puntero. Los archivos de acceso secuencial se escanean estrictamente de principio a fin, y en los archivos de acceso aleatorio, el puntero se puede colocar en cualquier lugar desde donde se escriben o leen los datos del archivo.

Por lo tanto, el puntero proporciona la posición del archivo. Hay varias funciones de posicionamiento disponibles:

    Eofstat = feof (fid): comprueba si se ha alcanzado el final del archivo con el identificador fid. Devuelve 1 si el puntero está al final del archivo, 0 en caso contrario;

    Message = ferror (fid): devuelve información sobre el error como una cadena de mensaje. Fid es un identificador abrir documento(consulte la función fopen para obtener una descripción detallada);

    Mensaje = f error (f id, "borrar") - borra el indicador de error para el archivo especificado;

    Ferror (.): Devuelve el error de la última operación de E / S para el archivo especificado.

Si la última operación de E / S realizada en el archivo especificado por fid fue exitosa, el mensaje es una cadena vacía y errnum es 0.

Un errnum distinto de cero indica que se produjo un error en la última operación de E / S. El parámetro de mensaje contiene una cadena que contiene información sobre la naturaleza del error que ocurrió.

Ejemplo:

»Fid = fopen (" c: \ examplel "." A + ")

Fid =

»T = fread (3,)

Matriz vacía: 4 por 0

»Ferror (3)

Ans =

¿El archivo está abierto para lectura? ... ... ...

    frewind (fid): establece el puntero de posición al comienzo del archivo con el identificador fid;

    Status (fseekCfid, offset, origin): establece el puntero en el archivo con el identificador fid en la posición especificada, en el byte especificado por el parámetro de desplazamiento relativo al origen.

Argumentos:

    Fid es el identificador de archivo devuelto por la función fopen;

    offset es un valor que se interpreta de la siguiente manera:

    • offset> 0: cambia la posición del puntero en bytes de offset hacia el final del archivo;

      offset = 0 - no cambia la posición del puntero;

      compensar<0 - изменяет позицию указателя на offset байт в направлении к началу файла;

    Origin es un argumento que toma los siguientes valores:

    • "bof o -1 es el comienzo del archivo;

      "cof" o 0 es la posición actual del puntero en el archivo;

      "eof" o 1 - final del archivo;

    el estado es un argumento de salida. El valor es 0 si la operación fseek se realizó correctamente y -1 en caso contrario. Si ocurre un error, use la función ferror para más detalles;

    position = ftel I (fid) - Devuelve la posición del puntero para el archivo con el fid, obtenido usando la función fopen. El argumento de salida de posición es un entero no negativo que especifica la posición del puntero, en bytes, con respecto al comienzo del archivo. Si la solicitud no tuvo éxito, la posición es -1. Utilice la función ferror para mostrar la naturaleza del error.

Ejemplos:

»F id-fopen (" c: \ ejemplo "." A + ")

Fid =

"Count = fwrite (3, magic (6))

Cuenta = 36

»FtelK3)

Ans =

»Frewind (3): ftell (3)

Ans =

"Fseek (3.12.0); ftell (3)

ans =

»Feof (3)

Ans =

»Fcerrar (3)

Ans =

    S = sprintf (formato, A, ...): formatea los datos de la matriz A en el formato especificado por el parámetro de formato y crea una variable de cadena s a partir de ellos;

    SprintfCformat, A ....): similar a la función descrita anteriormente, pero además devuelve una cadena de error errmsg si se produjo un error, o una cadena vacía en caso contrario. La cadena de formato define el sistema numérico, la alineación, los dígitos significativos, el ancho del campo y otros atributos del formato de salida. Puede contener caracteres regulares junto con calificadores, caracteres de alineación, etc. La función fprintf se comporta como la función análoga ANSI C fprintf 0, con algunas excepciones y extensiones.

Ejemplos:

"SprintfC" * 0.5g ". (L + sqrt (7)) / 4)

ans =

0.91144

»SprintfC "% s","Oye")

ans =

Oye

La función sscanf es similar a la función fscanf, excepto que lee datos de una variable simbólica de MATLAB en lugar de un archivo.

    А = sscanf (s, formato) - lee los datos de la variable simbólica s, los convierte de acuerdo con el valor del formato y crea la matriz A basada en estos datos El parámetro de formato determina el formato de los datos que se leerán;

    A = sscanf (s, formato, tamaño): lee la cantidad de datos especificados por el parámetro de tamaño y los convierte de acuerdo con la cadena de formato. El parámetro de tamaño es un argumento que especifica la cantidad de datos a leer. Los siguientes valores son válidos:

    • n - lectura de n elementos en un vector de columna;

      inf - leer elementos al final de una variable simbólica y colocarlos en un vector de columna que contiene el mismo número de elementos que en una variable de cadena;

      Lee tantos elementos como sea necesario para llenar la matriz de tamaño thp. El llenado se realiza por columnas. La cantidad n (¡pero no!) Puede tomar el valor Inf.

    Sscanf (...): lee los datos de la variable de carácter s, los convierte de acuerdo con el valor del formato y los devuelve a la matriz A. El parámetro de recuento es un argumento de salida que devuelve el número de elementos leídos correctamente; errmsg es un argumento de salida que devuelve una cadena de error si ocurrió un error y una cadena vacía en caso contrario. nextindex es un argumento de salida que contiene un número uno más que el número de caracteres en s.

La cadena de formato consta de especificadores y caracteres ordinarios. Los especificadores indican el tipo de datos e incluyen el carácter %, opción de ancho de campo y caracteres de formato. Las explicaciones se pueden encontrar en la descripción de la función fscanf.

Ejemplo:

"S =" 4,83 3,16 22 45 ";

"= Sscanf (s."% F ")

A =

4.8300 - 3.1600

22.0000

45.0000

Err =

siguiente =

Archivos especializados

Las funciones siguientes se refieren a algunos archivos especializados:

    M = dlmread (nombre de archivo, delimitador): lee datos del nombre de archivo delimitado por ASCII, utilizando el delimitador delimitador, en una matriz M. Utilice "\ t" i para especificar un delimitador de tabulación;

    M = dlmreadCfilename.delimiter, gs): lee los datos del nombre del archivo con un delimitador ASCII, usando el delimitador delimitador, en una matriz M, comenzando en el desplazamiento r (por filas) yc (por columnas). Los parámetros r y c se cuentan comenzando desde cero, de modo que r = 0, c = 0 corresponde al primer valor del archivo;

    M = dlmreadCfilename, deli mi ten, r, c, range): importa un rango indexado o nombrado de datos delimitados en formato ASCII. Para usar un rango de celdas, debe definir el parámetro de rango como range = [TopString. Columna izquierda. BottomRow, RightColumn].

Los argumentos de la función dlmread son los siguientes:

    El delimitador es un carácter que separa elementos individuales de la matriz en una hoja de cálculo ASCII;

    (,) - separador predeterminado;

    R, c: la celda de la hoja de cálculo de la que se toman los elementos de la matriz, correspondiente a los elementos en la esquina superior izquierda de la tabla;

    rango es un vector que define el rango de celdas en la hoja de cálculo.

El comando dlmwrite convierte una matriz MATLAB en un archivo delimitado por ASCII legible por programas de hoja de cálculo:

    Dl mwri te (f i 1 ename. A. delimiter): escribe la matriz A en la celda superior izquierda de la hoja de cálculo del nombre del archivo, utilizando delimitadores para separar los elementos de la matriz. Utilice "U" para crear un archivo delimitado por tabulaciones. Se omiten todos los elementos con un valor de 0. Por ejemplo, la matriz aparecerá en el archivo como "1., 2" (si el separador es una coma):

    dlmwrite (nombre de archivo, A, delimitador, r, c): escribe la matriz A en el nombre de archivo, comenzando en la ubicación especificada por r y c, usando el delimitador;

    info = imfinfo (nombre de archivo.fmt): devuelve una estructura, cuyos campos contienen información sobre la imagen en el archivo gráfico. El argumento del nombre de archivo es una cadena que especifica el nombre del archivo gráfico, fmt es una cadena que especifica el formato del archivo. El archivo debe estar en el directorio actual o en el directorio especificado en la ruta de MATLAB. Si imflnfo no puede encontrar un archivo llamado filename, busca un archivo llamado filename.fmt.

Mesa 19.5 muestra los valores posibles para el argumento fmt.

Cuadro 19.5. Formatos gráficos admitidos y sus designaciones

Si el nombre de archivo es un archivo TIFF o HDF que contiene más de una imagen, entonces 1 nf o es una matriz de estructuras con un elemento separado (es decir, con una estructura individual) para cada imagen del archivo. Por ejemplo, info (3) contendría información sobre la tercera imagen del archivo. Muchos de los campos de información dependen del archivo específico y su formato. Sin embargo, los primeros nueve campos son siempre los mismos. Mesa 19.6 enumera estos campos y describe sus significados.

Cuadro 19.6. Campos de estructura de información y sus significados

Campo Sentido
Nombre del archivo Una cadena que contiene el nombre del archivo; si el archivo no está en el directorio actual, la línea contiene la ruta completa al archivo
FileModDate Una cadena que contiene la fecha en que se modificó por última vez el archivo.
Tamaño del archivo Un número entero que indica el tamaño del archivo en bytes.
Formato Una cadena que contiene el formato de archivo especificado por el parámetro fmt; para archivos JPEG y TIFF, se devuelve un valor de tres caracteres
FormatVersion Una cadena o número que describe la versión del formato.
Ancho Un número entero que indica el ancho de la imagen en píxeles.
Altura Un número entero que indica la altura de la imagen en píxeles.
Profundidad de bits Un número entero que indica el número de bits por píxel.
Tipo de color Una cadena que describe el tipo de imagen: "color verdadero" para una imagen RGB, "escala de grises" para una imagen en escala de grises o "indexada" para una imagen en color indexada.

    Info = imfinfo (nombre de archivo): intenta determinar el formato de archivo por contenido. Ejemplo:

»Info = irrifinfo (" С: \ exposición \ Internet.bmр ")

Info =

Nombre de archivo: "C: \ Exhibition \ Internet.bmr"

Tamaño del archivo: 481078

Formato: "bmp"

FormatVersion: "Versión 3 (Microsoft Windows 3.x)"

o una imagen de color verdadero (RGB) de clase uint8, el comando imwrite escribe los valores reales de la matriz en un archivo. Si A es de clase double, el comando imwrite anula los valores en la matriz antes de escribir usando la conversión uint8 (round (255 * A)). Esta operación convierte números de coma flotante en un rango a enteros de 8 bits en un rango. Los valores válidos para ftnt son los mismos que para el comando imfinfo;

    imwrite (X, map, filename, fmt): escribe la imagen indexada ubicada en la matriz X y la paleta de colores alquitrán correspondiente en el nombre del archivo. Si X contiene una imagen uint8, el comando imwrite escribe los valores reales de la matriz en un archivo. Si X es doble, el comando imwrite anula los valores en la matriz antes de escribir usando la conversión uintS (X-l). La paleta de alquitrán debe ser de clase doble; la función imwrite anula los valores de alquitrán usando la conversión uint8 (round (255 * mar));

    imwrite (.... nombre de archivo): escribe la imagen en el nombre de archivo en el formato especificado por la extensión del archivo. La extensión puede ser uno de los valores válidos para el parámetro fmt;

    imwrite (.... Parámetro, Valor ....) define parámetros que controlan varias propiedades del archivo de salida. Las opciones se utilizan para archivos HDF, JPEG y TIFF;

    M = wklread (nombre de archivo): lee la hoja de cálculo Lotusl23 (WK1) en la matriz M;

    М = wklread (filename.r.c): lee los datos a partir de la celda especificada por los valores (r, s). Los parámetros r y c están basados ​​en cero, de modo que r = 0, c = 0 definen la primera celda del archivo;

    M = wklread (nombre de archivo, r, c, rango): lee el rango de valores especificado por rango, donde rango puede estar en una de las siguientes formas:

    • un vector de cuatro elementos que define un rango de celdas en el formato [top_line. columna_izquierda, línea_inferior, columna_derecha];

      un rango de celdas definido por una cadena, por ejemplo "A1 ... C5";

      un nombre de rango, especificado como una cadena, como "Ventas".

    wklwrite (nombre de archivo.M): escribe los valores de la matriz M en el nombre de archivo de la hoja de cálculo Lotus 123 WK1;

    wklwrite (nombre de archivo, M, r, c): escribe datos a partir de la celda especificada por los valores (r, s). Los parámetros r y c están basados ​​en cero, por lo que r = 0, c = 0 define la primera celda de la hoja de cálculo.

Mesa 19.7 muestra los formatos de imagen disponibles para lectura mediante la función imread. Las listas de parámetros y sus posibles valores para la función imwrite se encuentran en la tabla. 19,8.

Cabe señalar que la mayoría de las funciones discutidas anteriormente rara vez son utilizadas por los usuarios. Pero se utilizan ampliamente con fines sistémicos y son de gran interés para los especialistas.

Cuadro 19.7. Formatos de archivo y su breve descripción

Formato Variantes
BMP Imágenes sin comprimir de 1, 4, 8 y 24 bits; Imágenes comprimidas RLE de 4 y 8 bits
HDF Mapas de bits de 8 bits, con o sin paleta de colores; Mapas de bits de 24 bits
JPEG Cualquier imagen JPEG; Imágenes JPEG con algunas extensiones de uso común
PCX Imágenes de 1, 8 y 24 bits
Pelea Cualquier imagen TIFF, incluidas las imágenes sin comprimir! -Bit, 8-bit y 24-bit; Imágenes de 1 bit, 8 bits y 24 bits con compresión de bits por paquete; Imágenes de 1 bit con compresión CCITT
XWD Zpixmaps de 1 y 8 bits; XYBitmaps; XYPixmaps de 1 bit

Cuadro 19.8. Parámetros utilizados al escribir archivos gráficos

Parámetro Sentido Valor por defecto
Opciones para archivos HDF
"Compresión" Uno de los siguientes valores: "none", Vie "," jpeg " "rle"
"Calidad" Un número entre 0 y 100; el parámetro es compatible con "Compression" = "jpeg"; cuanto mayor sea el número, mayor será la calidad del archivo (menos distorsión del archivo durante la compresión) y mayor será su tamaño 75
"WriteMode" Uno de los siguientes valores: "sobrescribir", "añadir" "Sobrescribir"
Opciones para archivos JPEG
"Calidad" Un número entre 0 y 100; cuanto mayor sea el número, mayor será la calidad del archivo (menos distorsión al comprimir el archivo) y mayor será el tamaño del archivo. 75
Opciones para archivos TIFF
"Compresión" Uno de los siguientes valores: "none", "packbits", "ccitt"; el valor "ccitt" solo es válido para imágenes binarias (dos colores) "ccitt" para imágenes binarias; "packbits" para todos los demás
"Descripción" Cualquier cadena; el valor del campo ImageDescription es devuelto por el comando imfinfo Línea vacía
"Resolución" Valor escalar para la resolución en las direcciones xey
72

¿Qué hemos aprendido de nuevo?

En este tutorial, aprendimos:

    Abrir y cerrar archivos.

    Realice operaciones en archivos binarios y formateados.

    Coloque el archivo.

    Aplicar archivos especializados.

Los archivos M le permiten almacenar muchos comandos de programa MATLAB en una
archivo, y luego ejecútelos con un comando o usando el mouse.

Puede resolver problemas simples con bastante facilidad y correctamente en el primer intento,
sin embargo, los problemas más complejos suelen resolverse mediante prueba y error:
editar y reiniciar una serie de comandos varias veces seguidas. Tiempo
cómo la ventana Historial de comandos puede ser útil en todo
las primeras etapas de este proceso, en última instancia, encontrará mucho más
será eficaz utilizar archivos M. Los archivos M también permiten
comparta su solución al problema con otros usuarios del programa
MATLAB y formatee sus resultados para que otros los lean. Existe
dos tipos diferentes de archivos M: archivos de script M y archivos de función M. Nosotros
demostraremos el uso de ambos tipos de archivos M, similar a cómo
presentamos varias soluciones a los problemas discutidos anteriormente.

Los archivos M son archivos de texto ordinarios que contienen
Comandos del programa MATLAB. Puede crear y modificar estos archivos,
utilizando cualquier editor de texto o procesador de texto que
capaz de guardar archivos como texto sin formato en formato ASCII. (Estos son
editores como Notepad y WordPad en Windows y emacs y vi en sistemas
UNIX.) Para mayor comodidad, puede utilizar el módulo Editor integrado
El (editor) que se puede iniciar con el comando de edición es él mismo
(para editar un nuevo archivo), o eligiendo el nombre de un archivo M existente en
directorio actual. Para iniciar el módulo Editor, también puede
use el menú Archivo o los dos íconos más a la izquierda en el panel
herramientas, tanto para crear un nuevo archivo M como para abrir ya
existente. Haga doble clic en el archivo M en la ventana Directorio actual
(Directorio actual) también abrirá el archivo seleccionado en el módulo Editor.

Scripts-archivos-M

El archivo de script M contiene una secuencia de comandos del programa MATLAB para
lanzar en un orden específico. Ahora le mostraremos cómo construir un archivo M.
un guión para resolver el problema matemático discutido anteriormente. Crear
un archivo que contiene las siguientes líneas:

x =;

Suponga que guardó este archivo como taski.m en su actual
directorio o algún directorio de su ruta. Puede asignar al archivo
nombre de cualquier manera (su sistema operativo puede tener diferentes
características), pero se requiere la extensión .t.

Puede hacer que su programa MATLAB ejecute (o ejecute) este
script ingresando el comando taski en la ventana de comandos. (Tu no
la extensión .m debe ingresarse aquí; Programa MATLAB automáticamente
agrega la extensión cuando busca archivos. Mostrar resultados (pero no
comandos utilizados para calcular el resultado) se mostrarán en la ventana
Ventana de comando La secuencia de comandos ahora puede
se puede cambiar fácilmente modificando el archivo M task1.m. Por ejemplo, si tu
desea calcular sin (0.0001) / 0.0001 también, puede modificar el archivo M:

formato largo
x =;
y = sin (x) ./ x

y luego ejecute el script modificado ingresando el comando taski nuevamente.
Pero primero asegúrese de guardar sus cambios en el archivo taski; de lo contrario
caso, MATLAB no reconoce estos cambios.

  • Algunas de las variables establecidas cuando se ejecutan los archivos de secuencia de comandos M se guardarán como si hubiera ingresado estas variables directamente en la ventana de comandos. Por ejemplo, el programa discutido anteriormente hará que todos los resultados numéricos se muestren con 15 lugares decimales en el futuro. Para volver al formato de 5 caracteres, ingrese el comando de formato corto.

Modo celular

Las nuevas características del programa MATLAB 7 le permiten dividir archivos M -
script en partes (elementos) llamadas celdas. Esto es especialmente útil
si su archivo M es largo o si tiene la intención de publicarlo (el último
el tema se trata en la sección "Publicación de archivos M"). Para empezar
nueva celda, inserte una línea de comentario (que servirá como
encabezado de celda), comenzando esta línea con dos caracteres de porcentaje %%. Si abres
M-file en el módulo Editor y seleccione el comando de menú Celda => Activar celda
Modo (Celda => Habilitar modo celular), en este caso debajo del primer panel
se mostrará la segunda barra de herramientas. Cuando haces clic en
cualquier línea en el archivo M, la celda a la que pertenece esta línea será
resaltado en amarillo pálido. Puedes calcular esto
celda seleccionando el comando de menú Celda => Evaluar celda actual.
celda actual) o haciendo clic en el icono Evaluar celda.
Esto puede resultar muy útil si solo ha realizado cambios en una
celda y no desea ejecutar el script completo nuevamente. También hay un elemento
menú e icono para realizar la operación de evaluación y avance de la celda
(Calcular celda y así sucesivamente). Dado que ha activado el modo celular, también puede
cree celdas adicionales seleccionando el comando de menú Celda => Insertar divisor de celda
(Celda => Insertar separador de celdas) o haciendo clic en el icono% +.

Inicialización de archivos M-syenaries

Para que los resultados del archivo de secuencia de comandos M sean reproducibles, la secuencia de comandos debe
Ser autónomo, independiente de otras variables que pueda
establecido en cualquier lugar durante una sesión de programa MATLAB sobrante de la anterior
el programa de cálculo también debe eliminarse. Por ejemplo, si preguntas
una variable llamada sin en la ventana de comandos, y luego
ejecute el script task1.m, obtendrá un mensaje de error como en
actualmente sin representará una variable, no una incorporada normal
función. Con esto en mente, puede ingresar la línea clear all al comienzo del archivo M-
script para asegurarse de que la configuración de la variable anterior no sea
afectará los resultados. También puede ingresar a la línea cerrar todo al principio
Archivo de secuencia de comandos M que genera gráficos para cerrar todas las ventanas de imágenes y
empezar desde el principio.
Como se señaló anteriormente, los comandos en el archivo de secuencia de comandos M no se
que se muestra en la ventana de comandos. Si quieres
los comandos se muestran junto con los resultados, agregue el comando echo on a
el comienzo del script (también es útil agregar el comando echo off al final
texto). Entonces, cualquier comentario en el archivo M también se reflejará. Al inicio
un archivo de secuencia de comandos M largo, esta operación es útil para realizar un seguimiento de:
qué salida coincide con qué entrada.

A continuación se muestra una versión del archivo task1.m con comentarios más detallados, en
que muestra tanto la entrada como la salida.

borrar todo% eliminar definiciones de variables antiguas
echo en% muestra la entrada en la ventana de comandos
formato largo% enciende la pantalla de 15 dígitos
x =; % define los valores de x
y = sin (x) ./ x% calcula los cocientes deseados
% Estos valores ilustran el hecho de que el límite de
% sin (x) / x cuando x se acerca a 0 es igual a 1.
eco apagado

Al inicio, el programa MATLAB busca la ruta predeterminada en
el asunto de un archivo de secuencia de comandos M llamado startup.m. Si crea un archivo de este tipo,
los comandos que contiene se ejecutarán cada vez que se ejecute
Programa MATLAB. Puede utilizar este archivo para guardar su configuración,
que se mueven de una sesión a otra, por ejemplo, cambia a la actual
directorio o ruta. (Además de los comandos cd y addpath discutidos anteriormente,
puede utilizar el comando rmpath para eliminar directorios de la ruta).

Funciones de archivos M

Las funciones de archivos M, a diferencia de los scripts de archivos M, le permiten especificar
valores de entrada cuando ejecuta tales archivos M desde la línea de comando MATLAB
o de otro archivo M. Como se mencionó en el capítulo anterior, también puede
usar la sintaxis de función anónima (@) (no presente en el programa
MATLAB 6 y anteriores) o el comando en línea para configurar
propias funciones en la línea de comando. Sin embargo, estos métodos proporcionan la tarea
funciona en una sola línea. Por lo tanto, los archivos M son necesarios para
configuración de funciones más complejas. Como script de archivo M, función de archivo M
es un archivo de texto sin formato que se puede encontrar en su
el directorio actual o en cualquier lugar de su ruta MATLAB.

Volvamos al problema discutido anteriormente, en el que calculamos
algunos valores de sin (x) / x, donde x = 10 ^ b para algunos valores de b. excepto
Además, suponga que desea encontrar el valor b más pequeño para el que
sin (10 ^ b) / (10 ^ b), y que el resultado es 1 con 15 dígitos de precisión.

A continuación se muestra una función de archivo M llamada sinelimit.m, compilada con el objetivo
aclarando esta pregunta:

función y = sinelimit (s)
% SINELIMIT calcula sin (x) / x para x = 10 ^ (- b)
% donde b = 1, ..., c.
Formato largo
b = 1: c;
x = 10. ^ (- b);
y = (sin (x) ./ x) ";

La primera línea del archivo comienza con la palabra función, que identifica
archivo como función de archivo-M. (En el módulo Editor, esta es una reserva
la palabra está resaltada en azul.) La primera línea del archivo M especifica el nombre de la función y
describe tanto los argumentos entrantes (o parámetros) como los valores salientes.
En este ejemplo, la función se llama sinelimit. Nombre de archivo (excluyendo
extensions.t) y el nombre de la función debe coincidir. Cuando creas este nuevo
M-file-function en una ventana del editor sin nombre y seleccione el comando Guardar
(Guardar), el módulo Editor nombra el archivo sinelimit.m en sí.
La función en nuestro ejemplo tiene un elemento de entrada, que está dentro del archivo M
denotado como s. También se devuelve un elemento como resultado:
el valor de y que aparece al final de la ejecución de la función.
Es una buena práctica proporcionar la primera línea del archivo de función M con una
o más líneas de comentarios que expliquen lo que hace el archivo M. Donde
el comando de ayuda buscará automáticamente esta informacion... Por ejemplo:

>> ayuda sinelimit

SINELIMIT calcula sin (x) / x para x = 10 ^ (- b)
donde b = 1 ,. ... ... , con.

El resto de las líneas del archivo M definen la función. En este ejemplo, b se establece en
como un vector de cadena que consta de números enteros de 1 as, entonces x
se calcula a partir de b, y finalmente y se determina a partir de x.

  • Las variables que se utilizan en el archivo de función M, como b, xey en sinelimit.m, son variables locales. Esto significa que, a diferencia de las variables definidas en el archivo de secuencia de comandos M, estas variables no están asociadas con ninguna otra variable con los mismos nombres que puede haber utilizado en la ventana de comandos. El programa MATLAB no recuerda los valores de estas variables después de que se ejecuta la función de archivo M. Para obtener más información, consulte la sección Variables en archivos de función M en el Capítulo 4.

Tenga en cuenta que las líneas que especifican b, xey terminan con un punto c
coma. El uso de un punto y coma al final de las líneas define la ausencia de
la salida de los resultados para estas líneas, es decir, el resultado del trabajo de estas líneas no será
que se muestra en la ventana de comandos. A pesar de que
mostrar los resultados de los cálculos intermedios puede ser útil
para la depuración, básicamente debería suprimir toda la salida en el archivo de función-M.
A continuación se muestra un ejemplo que muestra cómo se usa la función sinelimit:

»Sinelimit (5)
ans =
0.99833416646828
0.99998333341667
0.99999983333334
0.99999999833333
0.99999999998333

Ninguno de los valores de b del primero al quinto dan como resultado el valor deseado.
el resultado, 1 con una precisión de 15 decimales. A juzgar por la salida, uno puede esperar
encuentre la respuesta a la pregunta anterior ingresando el comando sinelimit A0).
¡Intentalo!

Por lo tanto, de lo anterior, podemos concluir que necesita ver mucho información adicional y alternativas!

Referencia de propiedades de objeto gráfico

Cuadros de diálogo estándar.

Funciones para crear cuadros de diálogo

MATLAB define 15 funciones para crear cuadros de diálogo estándar. La apariencia de los cuadros de diálogo se puede personalizar especificando los argumentos de entrada de estas funciones. A continuación se muestran ejemplos de cuadros de diálogo y los nombres de las funciones correspondientes con su propósito.

Cuadros de diálogo de mensajes:

errordlg: crea un cuadro de diálogo con un mensaje de error;

helpdlg: crea un cuadro de diálogo para mostrar información;

warndlg: crea un cuadro de diálogo de advertencia;

msgbox: crea un cuadro de diálogo para mostrar un mensaje.

Diálogo de confirmación(función questdlg)

Cuadro de diálogo para ingresar información(función inputdlg)

Cuadro de diálogo para la selección de una lista(función listdlg)

Cuadros de diálogo para configurar las opciones de impresión

pagesetupdlg: muestra un cuadro de diálogo de varias páginas para configurar los parámetros de la hoja y cómo imprimir el contenido de la ventana gráfica;

printdlg: muestra un cuadro de diálogo para seleccionar las opciones de impresión y la configuración de la impresora.

Archivo abrir y guardar cuadros de diálogo

uigetfile: muestra un cuadro de diálogo de apertura de archivo

uiputfile: muestra el cuadro de diálogo para guardar el archivo

Cuadro de diálogo de selección de directorio(función uigetdir)

Diálogo de selección de fuente(función uisetfont)

Cuadro de diálogo de selección de color(función uisetcolor)

Barra de progreso(función de barra de espera)

Además de las funciones enumeradas, hay una función de diálogo diseñada para crear una ventana gráfica vacía. Las propiedades de esta ventana gráfica se pueden configurar utilizando los argumentos de entrada para la función de diálogo.

Consideremos el uso de cuadros de diálogo estándar usando el ejemplo de la ventana abierta de archivo.

Ejemplo de aplicación myview con diálogo de apertura de archivo

Creemos la aplicación myview con interfaz grafica usuario, que le permite ver archivos gráficos. La ventana de la aplicación en ejecución se muestra en la Fig. 1. Al presionar el botón Abrir imagen, aparece el cuadro de diálogo estándar Seleccionar archivo para abrir. El archivo gráfico seleccionado se muestra en la ventana de la aplicación. Al hacer clic en el botón Cerrar imagen, se borra la ventana de la aplicación myview.

Arroz. 1. Ventana de aplicación myview.

En el entorno GUIDE, en la ventana de la aplicación en blanco, coloque los ejes y dos botones como se muestra en la Figura 2. En el inspector de propiedades, etiquete el botón izquierdo con btnOpen y establezca su propiedad String en Abrir imagen. Lo mismo ocurre con el botón derecho: etiqueta - btnClose y String - Cerrar imagen.

Los ejes son necesarios para mostrar la imagen usando la función de imagen. Usaremos una llamada de bajo nivel a la función de imagen, que asume la dirección opuesta del eje. y para que el dibujo no quede al revés. Entonces, en el inspector de propiedades, cambie la dirección del eje y estableciendo la propiedad de ejes YDir en reversa. Para ocultar las líneas de cuadrícula y las líneas de los ejes, haga que los ejes sean invisibles estableciendo su propiedad Visible en desactivada.

Arroz. 2. Preparación de la ventana de la aplicación en el entorno GUIDE.

Guarde la aplicación como myview y programe los eventos de devolución de llamada para los botones Abrir imagen y Cerrar imagen.

Cuando el usuario hace clic en Abrir imagen, debe aparecer un cuadro de diálogo de apertura de archivo y, después de seleccionar un archivo, la imagen debe mostrarse en los ejes. Usemos el cuadro de diálogo de archivo abierto estándar creado por la función uigetfile. La referencia más simple es la siguiente:

Uigetfile

Si el usuario seleccionó un archivo y cerró la ventana haciendo clic en el botón Abrir, el primer argumento de salida FileName devuelve el nombre del archivo (con la extensión) y el segundo PathName devuelve la ruta al archivo. Si el usuario no seleccionó el archivo (hizo clic en Cancelar, o cerró la ventana con un botón con una cruz en el título de la ventana, o hizo clic en ), la variable FileName será igual a cero. Es por eso otras acciones dependen del valor de FileName.

Si se seleccionó el archivo, debe

1) forma el nombre completo del archivo;

3) visualice la imagen en el eje utilizando la función de imagen.

Si no se ha seleccionado el archivo, no es necesario que haga nada.

El evento de devolución de llamada del botón Cerrar imagen puede constar de un solo operador: una llamada a la función cla para borrar los ejes.

Programe las subfunciones de eventos de devolución de llamada de los botones Abrir imagen y Cerrar imagen de la siguiente manera.

Función btnOpen_Callback (hObject, eventdata, handle)% Maneja el evento Callback del botón Abrir imagen% Obtiene el nombre y la ruta al archivo = uigetfile; % Comprobando si el archivo fue seleccionado si FileName ~ = 0% Formando la ruta completa al archivo FullName =; % Leyendo una imagen de un archivo gráfico Pict = imread (FullName); % Visualización de la imagen en el eje de la imagen ("CData", Pict) end function btnClose_Callback (hObject, eventdata, handle)% Manejo del evento Callback del botón Cerrar imagen% Borrado de los ejes cla

Inicie la aplicación myview. Al hacer clic en el botón Abrir imagen, aparece el cuadro de diálogo Seleccionar archivo para abrir. Sin embargo, los archivos gráficos no están visibles en el campo que muestra el contenido de la carpeta actual. Esto se debe a que, de forma predeterminada, el filtro de archivos (la lista desplegable Archivos de tipo) contiene la cadena "Todos los archivos MATLAB" y solo están visibles los archivos con extensiones aceptadas por MATLAB. Por supuesto, cada vez que abra un archivo gráfico, seleccione la línea "Todos los archivos (*. *)" De la lista desplegable Archivos de tipo para mostrar todos los archivos en la carpeta actual. Pero es mucho mejor crear inmediatamente un cuadro de diálogo de apertura de archivo configurado para ciertas extensiones... Por ejemplo, para mostrar archivos con extensiones bmp y jpg, consulte la función uigetfile con un argumento de entrada, una cadena en la que las plantillas con las extensiones requeridas * .bmp y * .jpg están escritas separadas por punto y coma:

Uigetfile ("*. Bmp; *. Jpg");

Cambie la llamada a uigetfile en la subfunción btnOpen_Callback a lo anterior y asegúrese de que la lista desplegable Archivos de tipo del cuadro de diálogo de apertura de archivos contenga solo dos líneas: "* .bmp; *. Jpg" (predeterminado) y "Todos los archivos (*. *) ".

La función uigetfile permite un control más flexible sobre la configuración del filtro de archivos. Los veremos en la sección dedicada a la descripción de funciones para crear cuadros de diálogo estándar. Analicemos ahora cómo implementar la capacidad de seleccionar varios archivos a la vez en el cuadro de diálogo estándar de apertura de archivos.

Seleccione varios archivos en el cuadro de diálogo de archivo abierto. Intercambio de datos entre subfunciones de una aplicación GUI.

En esta sección, veremos dos preguntas:

1) cómo organizar la selección de varios archivos en la ventana abierta de archivos estándar y leer su contenido en una matriz adecuada;

La respuesta a la primera pregunta es sencilla. Es necesario llamar a la función uigetfile con un par adicional de argumentos de entrada "MultiSelect" y "on":

Uigetfile (..., "MultiSelect", "on")

Dependiendo de la elección del usuario, los argumentos de salida serán de los siguientes tipos.

  • Si el usuario ha seleccionado varios archivos en el cuadro de diálogo de apertura de archivos (mediante la selección del mouse o haciendo clic y manteniendo presionado o ), FileName se convertirá en una matriz de celdas, cada celda de la cual contiene una línea con el nombre del archivo (y la extensión), y PathName será una línea que contiene la ruta a estos archivos (la ruta a todos los archivos es la misma, por lo tanto, PathName no debe ser una matriz de celdas).
  • Si el usuario seleccionó un archivo en el cuadro de diálogo de apertura de archivo, FileName será una línea con el nombre del archivo (con una extensión) y PathName será una línea con la ruta al archivo (consulte la sección anterior).
  • Si no se ha realizado ninguna selección, FileName es cero.

La segunda pregunta (comunicación entre las subfunciones de manejo de eventos) a menudo surge al programar aplicaciones GUI. Se resuelve de la siguiente manera. Los datos que deben guardarse al ejecutar alguna subfunción se escriben en los campos de la estructura de identificadores. Luego, en la misma subfunción, la estructura de los identificadores se guarda usando la función guidata:

guidata (gcbo, manijas)

Para obtener datos en otra subfunción, consulte el campo correspondiente de la estructura de identificadores. Por ejemplo, la aplicación tiene dos subfunciones btnA_Callback y btnB_Callback. Al ejecutar la subfunción btnA_Callback, se creó una matriz numérica, que será necesaria en la subfunción btnB_Callback. Entonces estas subfunciones deberían ser las siguientes.

Función btnA_Callback (hObject, eventdata, handle). ... ... handle.data =; guidata (gcbo, tiradores). ... ... función btnB_Callback (hObject, eventdata, handle). ... ... barra (handle.data). ... ...

Echemos un vistazo a la aplicación myview creada en la sección anterior y ampliemos sus capacidades. La aplicación modernizada debería permitir abrir varios archivos gráficos a la vez y verlos uno por uno. Después de seleccionar varios archivos gráficos en la ventana de la aplicación, solo se muestra uno, y al hacer clic en el botón (llamémoslo Siguiente) aparece la siguiente imagen.

En el entorno GUIDE, agregue un botón con la etiqueta btnNext y la inscripción Junto a la plantilla de la ventana de la aplicación myview (ver Fig. 2 de la sección anterior) (ver Fig. 1). En el inspector de propiedades, haga que no esté disponible estableciendo la propiedad Habilitar en desactivada. Estará disponible mientras se ejecuta la aplicación si el usuario ha seleccionado varios archivos gráficos para su visualización.

Arroz. 1. Ventana de la aplicación Myview con el botón Siguiente

Ahora necesita cambiar la subfunción btnOpen_Callback para manejar el evento de devolución de llamada del botón Abrir imagen y programar el evento de devolución de llamada del botón Siguiente. Al procesar la selección de archivos (o un archivo) por parte del usuario en el cuadro de diálogo abrir archivo, debe tener en cuenta todas las posibilidades: se seleccionan varios archivos, solo se selecciona un archivo, no se selecciona ningún archivo.

Si se seleccionan varios archivos gráficos (es decir, la matriz FileName es una matriz de celdas), entonces leemos las imágenes en una matriz de celdas y las guardamos en el campo Pict de la estructura de identificadores. El número de archivos gráficos abiertos (es decir, la longitud de la matriz FileName) se guardará en el campo ImageNum de la estructura de identificadores. Además, necesitamos el número de la imagen actual, para recordar cuál crearemos el campo CurImage de la estructura de manejadores.

Después de abrir los archivos, mostraremos el contenido del primero de ellos en la ventana de la aplicación. Si se abrieron varios archivos, haremos que el botón Siguiente esté disponible, y si solo uno, haremos que Siguiente no esté disponible.

Al procesar el evento de devolución de llamada del botón Siguiente, borre los ejes y muestre la siguiente imagen en ellos. Si la imagen actual es la última, se mostrará la primera.

A continuación se muestra el texto de las subfunciones btnOpen_Callback y btnNext_Callback. La subfunción btnClose_Callback permanece sin cambios.

Función btnOpen_Callback (hObject, eventdata, handle)% Manejar el evento Callback del botón Abrir imagen% Obtener nombres de archivo y rutas a ellos (o un nombre de archivo y ruta a él) = uigetfile ("*. Bmp; *. Jpg", "Selección múltiple", "activado"); % Averigüe cuántos archivos se han seleccionado si iscell (FileName)% FileName es una matriz de celdas, por lo que se han seleccionado varios archivos% escriba en el campo ImageNum de la estructura de identificadores el número de identificadores de archivos seleccionados. ); % Para cada archivo en el bucle, forme el nombre completo% y lea su contenido en la k-ésima celda de la matriz de celdas,% que se almacena en el campo Pict de la estructura de identificadores. % primero hacemos la matriz vacía para k = 1: handle.ImageNum FullName =; handle.Pict (k) = imread (Nombre completo); end% La primera imagen es la actual maneja.CurImage = 1; % Lo mostramos en la imagen de los ejes ("CData", tiradores.Pict (tiradores.CurImage))% Guardamos la estructura de los tiradores para acceder a ella en la subfunción btnNext_Callback guidata (gcbo, tiradores)% Hacer disponible el botón Siguiente conjunto (tiradores. btnNext, "Enable", "on") else% Solo se seleccionó un archivo o ninguno si FileName ~ = 0% Se seleccionó un archivo, formamos la ruta completa a él FullName =; % Leemos la imagen en la variable Pict (la estructura de los identificadores no es necesaria) Pict = imread (FullName); % Mostrar la imagen en el eje de la imagen ("CData", Pict)% Hacer que el botón Siguiente no esté disponible (handle.btnNext, "Enable", "off") end end function btnNext_Callback (hObject, eventdata, handle)% Manejar la devolución de llamada evento del botón Abrir imagen% Verificando qué imagen es la actual si se maneja.

Nota

La aplicación myview se puede mejorar aún más, por ejemplo, después de seleccionar archivos y antes de mostrar el primero, es una buena idea borrar los ejes. También debe tenerse en cuenta que el usuario ha seleccionado archivos no gráficos.

Referencia de funciones para crear cuadros de diálogo.

Crear un cuadro de diálogo de error - errordlg

La función errordlg se utiliza para crear un cuadro de diálogo de error estándar. La opción de compra más común

h = errordlg ("Texto del mensaje", "Título de la ventana").

H almacena un puntero a la ventana gráfica generada con un mensaje de error. Por ejemplo

h = errordlg ("División por cero", "Calculadora");

Conduce a una ventana como esta con un puntero h:

La ventana permanece en la pantalla hasta que se cierra con el botón OK, la tecla, el botón con una cruz en el título o usando el menú contextual del título.

La ventana del mensaje de error no es modal (le permite navegar a otras ventanas de aplicaciones MATLAB). Para hacerlo modal, después de crear una ventana usando la función errordlg, establezca la propiedad WindowStyle de la ventana gráfica en "modal": set (h, "WindowStyle", "modal")

Otra forma de crear un cuadro de mensaje de error modal es utilizar la función msgbox, que se describe a continuación.

El tamaño de la ventana se selecciona automáticamente dependiendo de la longitud de las líneas de texto, las líneas muy largas se envuelven. Para recibir un mensaje de varias líneas dividido en líneas de una manera específica, debe especificar una matriz de celdas de cadenas:

h = errordlg (("Formato de datos incorrecto"; "o"; "datos no coincidentes"), "dlgname")

Creación consecutiva de ventanas con mensajes de error con el mismo título:

h = errordlg ("División por cero", "Calculadora"); ... h = errordlg ("Operación incorrecta", "Calculadora");

da como resultado diferentes ventanas con mensajes de error. Para activar una ventana (colocarla encima de otras ventanas) y mostrar un nuevo mensaje en ella, en lugar de crear una nueva ventana, llame a errordlg con el tercer argumento "on":

h = errordlg ("División por cero", "Calculadora"); ... h = errordlg ("Operación incorrecta", "Calculadora", "activada"); % activación de la ventana antigua

Por supuesto, si se cerró la ventana anterior, h = errordlg (..., "on") simplemente crea una nueva.

Después de que se muestre un cuadro de diálogo con un mensaje de error, la aplicación continúa ejecutándose. A menudo surge la pregunta: cómo pausar la ejecución hasta que se cierre el cuadro de diálogo. Esto se hace usando la función waitfor, que detiene la ejecución de la aplicación hasta que se elimina un objeto gráfico específico. Un puntero a este objeto (en nuestro caso, una ventana de mensaje de error) se especifica como un argumento de entrada a la función waitfor:

h = errordlg ("División por cero", "Calculadora"); set (h, "WindowStyle", "modal") waitfor (h) a = 1; ....

Crear un diálogo de advertencia - warndlg

La función warndlg funciona de la misma manera que errordlg (ver arriba), pero no hay opción para llamarla con un tercer argumento de entrada "on". Por ejemplo,

da como resultado una ventana con el puntero h

La ventana de advertencia se diferencia de la ventana de mensaje de error solo por el icono:

Llamar a warndlg nuevamente con los mismos argumentos de entrada crea una nueva ventana, incluso si la anterior aún no se ha cerrado.

Crear cuadro de diálogo de ayuda - helpdlg

La función helpdlg funciona de la misma manera que warndlg (ver más arriba). Por ejemplo,

h = warndlg ("El archivo no está actualizado", "Preprocesador")

da como resultado una ventana como esta con el puntero h:

que se diferencia de la ventana de advertencia solo por el pictograma:

Llamar a helpdlg nuevamente con el mismo título de ventana activará la ventana anterior si no se ha cerrado. Si estaba cerrado, se crea uno nuevo.

Varias líneas de texto de mensaje, modalidad de ventana y suspensión de la ejecución de la aplicación hasta que se cierre la ventana se realizan de la misma manera que cuando se llama a errordlg.

Crear cuadro de mensaje - función de cuadro de mensaje genérico

La función msgbox le permite crear las ventanas de error, advertencia y ayuda descritas anteriormente. Para obtener texto de varias líneas, debe especificar una matriz de cadenas de celdas como primer argumento. Además, es posible crear una ventana con un icono arbitrario. El control de la modalidad de la ventana y la creación de una nueva con el mismo título se realiza utilizando los argumentos de entrada msgbox. La función msgbox devuelve un puntero a la ventana que crea.

h = msgbox ("¡Error muy grave!", "Programa", "error")- crea una ventana con un mensaje de error y un icono estándar (similar a errordlg).

c = ("¡Error muy grave!"; "No" "no se lo digas a nadie"); h = msgbox (c, "Programa", "error")- similar al anterior, pero el mensaje consta de dos líneas.

h = msgbox ("¡La última advertencia!", "Programa", "advertir")- crea una ventana con una advertencia y un icono estándar (similar a warndlg).

h = msgbox ("Sírvase usted mismo ...", "Programa", "ayuda")- crea una ventana con información de ayuda y un icono estándar (similar a helpdlg).

h = msgbox ("Aquí no hay imagen", "Programa", "ninguno"): crea una ventana con información de texto sin icono.

h = msgbox ("Texto del mensaje", "Título de la ventana", "personalizado", imagen, mapa de colores)- crea una ventana con un icono de usuario, por ejemplo:

= imread ("teléfono.gif"); % de lectura de imagen y mapa de colores del archivo h = msgbox ("Alguien te está llamando", "Teléfono", "personalizado", imagen, mapa)

da como resultado una ventana como esta

El último argumento de entrada ("modal", "no modal" o "reemplazar") controla la apariencia de la ventana y cómo se muestra una nueva ventana con el mismo título. Si no se especifica el método para mostrar una nueva ventana, siempre se crea una nueva ventana.

Ejemplos:

h = msgbox ("Error muy grave", "Programa", "modal")- muestra una ventana estándar modal con un mensaje de error

h = msgbox ("Alguien te está llamando", "Teléfono", "personalizado", foto, mapa, "modal")- muestra una ventana modal con una imagen dada para el pictograma y un mapa de colores.

h = msgbox ("¡Error muy grave!", "Programa", "error", "reemplazar")- reemplaza la ventana anterior con el título Programa, si no hay ninguno, crea una nueva. Al ejecutar comandos

h = msgbox ("¡Error muy grave!", "Programa", "error") h = msgbox ("Algo es extraño", "Programa", "advertir", "reemplazar")

la segunda ventana reemplazará a la primera.

Diálogo de confirmación - función questdlg

La función questdlg crea un diálogo de confirmación modal con varios botones. Al crear una ventana, cualquiera de los botones puede tener el foco. En el argumento de salida, la función questdlg devuelve la elección del usuario (una cadena con el nombre del botón que se presionó) o una cadena vacía si la ventana se cerró sin hacer clic en ningún botón. Para obtener texto de varias líneas, utilice una matriz de cadenas de celdas. Si se especifica una línea larga, se envuelve automáticamente.

Ejemplos:

button = questdlg ("¿Estás seguro?")- creación de una ventana de confirmación estándar con los botones Sí, No, Cancelar. Botón Sí enfocado (predeterminado).

button = questdlg ("¿Estás seguro?", "Programa")- creación de una ventana de confirmación estándar con un título y botones Sí, No, Cancelar.

button = questdlg ("¿Estás seguro?", "Programa", "No")- creación de una ventana de confirmación estándar con un título y botones Sí, No, Cancelar. El foco está en el botón No.

button = questdlg ("¿Estás seguro?", "Programa", "Sí", "Quizás", "Quizás")- crear una ventana de confirmación estándar con un título y dos botones Sí y Quizás. El foco está en el botón Quizás.

button = questdlg ("¿Estás seguro?", "Programa", "Sí", "No", "No lo sé", "No")- creación de una ventana de confirmación estándar con un título y tres botones Sí, No y no lo sé. El foco está en el botón No.

Cuadro de diálogo para ingresar información (función inputdlg)

La función inputdlg crea un cuadro de diálogo con un número específico de líneas de entrada. El número de líneas de entrada y sus títulos se determinan mediante argumentos de entrada. La ventana contiene los botones Aceptar y Cancelar. Si el usuario hace clic en Aceptar, entonces el argumento de salida de la función inputdlg es una matriz de celdas con información ingresada por el usuario en las líneas de entrada. Si la ventana se cerró haciendo clic en el botón Cancelar o de cualquier otra forma (excepto el botón Aceptar), entonces el argumento de salida es una matriz vacía de celdas.

Ejemplos:

M = inputdlg (("HORA" "VALORES"))- crea un cuadro de diálogo

Si, por ejemplo, en la línea TIME el usuario ingresó 0.1 0.3 0.55 4.5, y en la línea VALUES - 2.3 9.55 2.1 0.7 y presionó OK, entonces la matriz de celdas M tendrá los siguientes valores.

M = "0,1 0,3 0,55 4,5" "-2,3 9,55 2,1 0,7"

Puede usar str2num para convertirlos en vectores numéricos:

tiempo = str2num (M (1)) val = str2num (M (2))

M = inputdlg (("TIEMPO" "VALORES"), "Datos de entrada") - crea un cuadro de diálogo titulado Datos de entrada.

Para poder ingresar texto de varias líneas, debe especificar el tercer argumento de entrada: el número de líneas en cada área de entrada:

M = inputdlg (("matriz A" "Matriz B"), "Datos de entrada", 3)- si el tercer argumento es un número mayor que uno, entonces todas las áreas de entrada tienen la misma altura y tienen barras de desplazamiento.

Si la entrada se completa haciendo clic en el botón Aceptar, entonces cada celda de la matriz M contiene una matriz de caracteres. La matriz de caracteres contiene tantas líneas como se ingresaron en el área de entrada correspondiente.

M = inputdlg (("vector A" "Matriz B"), "Datos de entrada",)- para establecer la altura de las áreas de entrada por separado, debe especificar el número de líneas de cada área de entrada en el vector de columna como tercer argumento de entrada:

M = inputdlg (("vector A" "Matriz B"), "Datos de entrada",)- para establecer la longitud de las áreas de entrada en caracteres (en este caso, 100 caracteres), el tercer argumento de entrada debe ser una matriz:

M = inputdlg (("Nombre" "Año"), "Información", (char ("Juan", "Smith") "1990"))- para obtener una ventana con campos llenos (para solicitar el formato de entrada al usuario), especifique el cuarto argumento de entrada. Debe ser una matriz de celdas del mismo tamaño que el primer argumento de entrada:

M = inputdlg (("Nombre" "Año"), "Información", (char ("Juan", "Smith") "1990"), "en")- el último quinto argumento de entrada "activado" significa que el usuario puede cambiar el tamaño del cuadro de diálogo.

Cuadro de diálogo para elegir de una lista - función listdlg

La función listdlg crea un cuadro de diálogo con un cuadro de lista de las cadenas y botones especificados para la selección y deselección. Las líneas de lista se especifican mediante una matriz de celdas. Se admite la selección múltiple de elementos de lista. Se devuelve lo siguiente en los argumentos de salida: Selección: un número o vector con los números de las líneas seleccionadas y ok: información sobre si la selección se completó presionando el botón OK (ok = 1), o si la ventana se cerró en otro camino (ok = 0). Si ok = 0, la selección es una matriz vacía. De forma predeterminada, se pueden seleccionar varios elementos de la lista (haciendo clic con el mouse mientras se mantiene presionada la tecla Ctrl) y hay un botón Seleccionar todo para seleccionar todos los elementos.

= listdlg ("ListString", ("Lineal"; "Cuadrático"; "Cúbico"))- crea un diálogo de selección con una lista de tres líneas: Lineal, Cuadrática, Cúbica. Si el usuario seleccionó, por ejemplo, Cuadrático y presionó el botón OK, entonces Selección = 2 y ok = 1. Si el usuario seleccionó Lineal y Cúbico y presionó el botón OK, entonces Selección = y ok = 1, etc.

Se puede acceder a la función listdlg en la forma general:

= listdlg ("ListString", matriz de cadenas de celdas, param1, val1, param2, val2, ...)

Los parámetros y sus posibles valores son los siguientes:

  • "SelectionMode" - modo para seleccionar filas en la lista, valores: "único" (para seleccionar sólo una fila) o "múltiple" (por defecto, para seleccionar varias filas);
  • "ListSize" - tamaño del área de la lista en píxeles, el valor lo establece el vector [ancho-alto] (por defecto);
  • "InitialValue": selección inicial de líneas, el valor es un vector con números de línea que se seleccionarán cuando se muestre el cuadro de lista (por defecto 1);
  • "Nombre": el título de la ventana, el valor se establece mediante una cadena (por defecto, una cadena vacía);
  • "PromptString": texto encima de la lista, valores: cadena o matriz de cadenas o celdas de cadenas (para texto de varias líneas). El valor predeterminado es una matriz de celdas vacía.
  • "OKString" - una inscripción en el botón para seleccionar y cerrar la ventana, el valor es una cadena (por defecto "OK");
  • "CancelString" - una inscripción en el botón para cerrar la ventana sin selección, el valor es una cadena (por defecto "Cancelar");
  • "uh" - la altura de los botones de la ventana, el valor se establece en píxeles (18 por defecto);
  • "fus": la distancia entre los botones y la lista, el valor se establece en píxeles (18 por defecto);
  • "ffs" es la distancia desde el borde de la ventana a la lista, el valor se establece en píxeles (8 por defecto).
Por ejemplo, el comando

= listdlg ("ListString", ("Linear"; "Quadratic"; "Cubic"), ... "Nombre", "Aproximación", "ListSize" ,, "PromptString", "Seleccionar método", "fus", 5)

da como resultado la creación del siguiente cuadro de diálogo combinado:

Cuadro de diálogo para configurar los parámetros de la hoja y cómo se imprime el contenido de la ventana gráfica - función pagesetupdlg

pagesetupdlg - llamando al cuadro de diálogo Configurar página para la ventana gráfica actual (si no hay ventana, se crea una nueva).

pagesetupdlg (hF): llama al cuadro de diálogo Configurar página para la ventana gráfica con el puntero hF.

Los ajustes realizados en el cuadro de diálogo Configurar página afectan las propiedades correspondientes de la ventana gráfica: PaperSize, PaperType, PaperPozition, etc.

La función pagesetupdlg le permite configurar los parámetros de una sola ventana gráfica, es decir hF no puede ser un vector de punteros. Para configurar simultáneamente los parámetros principales de varias ventanas gráficas, utilice la función pagedlg, cuyo argumento de entrada puede ser un vector de punteros a ventanas gráficas.

La ventana Configurar página es modal; la ejecución de la aplicación se detiene hasta que se cierra la ventana.

Cuadro de diálogo para seleccionar opciones de impresión y configurar la impresora - función printdlg

printdlg: llama al cuadro de diálogo estándar de Windows para imprimir la ventana gráfica actual (si no hay ventana, se crea una nueva).

printdlg (hF): llama al cuadro de diálogo estándar de Windows para imprimir una ventana gráfica con un puntero hF.

printdlg ("- crossplatform", hF): llama al cuadro de diálogo Imprimir de MATLAB para imprimir una ventana gráfica con un puntero hF.

El cuadro de diálogo de impresión es modal, la aplicación se detiene hasta que se cierra la ventana.

Diálogo de apertura de archivo - función uigetfile

= uigetfile: muestra un cuadro de diálogo para abrir un archivo con el contenido del directorio actual. El filtro de archivos se establece en TODOS los archivos de MATLAB, lo que hace que solo se muestren los archivos con extensiones compatibles con MATLAB. En la lista desplegable Archivos de tipo, puede seleccionar solo archivos M, o solo ventanas gráficas, etc., o todos los archivos.

Si el usuario seleccionó un archivo (haciendo clic en el icono de archivo y presionando el botón Abrir, o haciendo doble clic en el icono de archivo, o escribiendo el nombre de archivo en la línea Nombre de archivo y presionando el botón Abrir), entonces FName contiene un línea con el nombre y la extensión del archivo, y PName es la ruta al archivo. Si el usuario no seleccionó el archivo y cerró la ventana, entonces FName = 0 y PName = 0. Después de llamar a la función uigetfile, verifique si el archivo fue seleccionado. Si es así, concatene estas líneas para obtener el nombre completo del archivo:

= uigetfile; if ~ isequal (FName, 0) FullName = strcat (PName, FName); % más datos leídos desde el final del archivo

Filtro de archivos especificado en el primer argumento de entrada de la función uigetfile, por ejemplo

= uigetfile ("*. txt");

crea un cuadro de diálogo de apertura de archivo cuya lista Archivos de tipo contiene dos cadenas: "* .txt" y "Todos los archivos (*. *)". Puede especificar más de una extensión, pero luego debe usar una matriz de celdas de cadenas:

= uigetfile (("*. txt"; "* .dat"));

Para colocar descripciones de tipos de archivos en la lista Archivos de tipo, debe especificar una matriz de celdas de dos columnas. Cada línea contiene la extensión y descripción del archivo (mientras que la línea "Todos los archivos (*. *)" No se agrega a la lista Archivos de tipo del cuadro de diálogo para abrir el archivo):

Filtro = ("*. Txt", "Archivos de texto (* .txt)"; "* .dat", "Archivos de datos (* .dat)"; "* .res", "Resultados (* .res)") ; = uigetfile (Filtro);

Como filtro, también puede haber una cadena con el nombre del archivo, luego está en la línea Nombre de archivo cuando aparece el cuadro de diálogo de apertura de archivo, y su extensión se toma como la extensión predeterminada y aparece en la lista Archivos de tipo junto con "Todos los archivos (*. *)".

Si necesita averiguar qué tipo de archivos ha seleccionado el usuario en la lista Archivos de tipo, debe consultar uigetfile con tres argumentos de salida:

= uigetfile (Filtro);

FilterIndex registra el número de tipo de archivo.

Para cesión título de la ventana propia Al abrir un archivo (en lugar de Seleccionar archivo para abrir), se llama a la función uigetfile con el segundo argumento de entrada:

= uigetfile (Filtro, "Abrir archivo");

Y para poner el nombre de archivo especificado en la línea Nombre de archivo al crear una ventana abierta de archivo, debe especificarlo en el tercer argumento de entrada (el nombre del archivo puede estar completo):

= uigetfile (Filtro, "Abrir archivo", "input.txt")

Así es como puede mostrar el contenido de cualquier carpeta, por ejemplo, el directorio raíz de la unidad D:

= uigetfile (Filtro, "Abrir archivo", "d: \")

Nota
Si queremos abrir archivos MATLAB como sugiere el uigetfile predeterminado, pero establecemos nuestro propio título de ventana (y la carpeta o archivo predeterminado en el cuadro de diálogo de apertura de archivo), entonces el primer argumento de entrada, el filtro, no se puede omitir. Debe ser una línea vacía:

= uigetfile ("", "Abrir archivo", "d: \");

Para que el usuario seleccionar varios archivos, debe llamar a uigetfile de una de las siguientes formas:

= uigetfile ("Selección múltiple", "activado"); o = uigetfile ("*. dat", "MultiSelect", "on"); o = uigetfile ("*. dat", "Abrir archivo", "d: \", "MultiSelect", "on")

Si el usuario ha seleccionado varios archivos en el cuadro de diálogo, entonces el argumento de salida FName es una matriz de celdas de los nombres de los archivos seleccionados (PName, por supuesto, sigue siendo una cadena, ya que los archivos se seleccionaron en la misma carpeta). Para obtener una matriz de celdas con nombres de archivo completos, el siguiente código es adecuado (la función strcat puede concatenar una cadena con una matriz de celdas de cadenas):

= uigetfile ("Selección múltiple", "activado"); if ~ isequal (FName, 0) FullName = strcat (PName, FName); fin

Funciones de MATLAB para abrir archivos de diferentes formatos

Ya que estamos hablando de abrir archivos, conviene citar las principales funciones de MATLAB diseñadas para trabajar con archivos de diferentes formatos.

carga- lectura de datos de un archivo binario o de texto.

abierto- abrir un archivo. El método de apertura depende de la extensión:

  • extensión metro- el archivo se abre en el editor de archivos M;
  • extensión mdl- el modelo se abre en Simulink;
  • extensión estera- escribiendo datos binarios desde el archivo a los campos de estructura, los nombres de los campos de estructura coinciden con los nombres de las variables registradas en el archivo;
  • extensión higo- se abre una ventana gráfica;
  • extensión pag- si hay un archivo-m con el mismo nombre, entonces se abre en el editor de archivos-M;
  • ampliación htm, html- el archivo se abre en la ventana del navegador del sistema de ayuda de MATLAB;
  • extensión pdf- el archivo se abre en Adobe Acrobat (requiere instalación de apertura por asociación en Windows);
Para abrir un archivo con una extensión no estándar, puede escribir su propia función que se llamará por defecto. Su nombre se forma a partir de la palabra open y la extensión, por ejemplo, para abrir archivos con la extensión dtm, escriba la función opendtm. Ejemplo. Suponga que necesita abrir binarios con la extensión dtm, que contienen los valores de dos variables, cuyos nombres pueden ser diferentes. Los valores de estas variables deben escribirse en las variables de tiempo y datos del entorno de trabajo. Luego escribimos la función de archivo opendtm:

function opendtm (fname)% lee datos en la estructura S = load ("- mat", fname); % aprende los nombres de los campos de estructura (nombres de variables) F = nombres de campo (S); % Asignar valores a las variables de tiempo y datos del banco de trabajo. Asignar ("base", "tiempo", S. (F (1))) asignar ("base", "datos", S. (F (2) ))

Así es como puede utilizar la función opendtm:

A = 1:10; B = raíz cuadrada (A); guardar ("my.dtm", "A", "B")% escribir A y B en un archivo en binario abierto ("my.dtm")% abrir llamadas a opendtm y la hora y los datos se crean en el entorno de producción

Nota. La función uiopen combina las capacidades de uigetfile y open: crea un cuadro de diálogo de archivo abierto y luego llama a open para abrirlo.

winopen - abre un archivo en Windows con la aplicación asociada con esta extensión, por ejemplo: winopen ("art.doc") - abre art.doc en MS Word; winopen ("my.txt") - abriendo my.txt en el bloc de notas; winopen ("all.htm"): abre all.htm en el navegador web.

computadora portátil- abrir o crear un libro M en MS Word.

publicar- ejecución del archivo M, dividido en celdas y guardar el resultado en el formato especificado: html, doc, ppt, xml, rpt, latex.

dos y sistema- ejecución de comandos (¡ver también!), lanzamiento de archivos ejecutables, por ejemplo:

sistema ("calc")- lanzamiento de la calculadora.

uiimport- abre la ventana del Asistente de importación para importar datos de varios formatos.

datos de importacion- Importación de datos según la extensión del archivo, útil también para leer datos de un archivo de texto delimitado.

csvread- lectura de datos numéricos de un archivo de texto delimitado por comas.

dlmread- lectura de datos numéricos de un archivo de texto con un delimitador especificado.

lectura de texto, lectura de textos- lectura de datos de un archivo de texto con un formato específico.

xlsread- lectura de datos de archivos de MS Excel.

wavread- lectura de un archivo WAV de sonido.

aviread- leer un archivo avi.

Estoy leído- lectura de archivos gráficos.

Además de las funciones enumeradas, existen funciones de bajo nivel para trabajar con archivos. Sus nombres comienzan con la letra f:

fcerrar- cerrando el archivo.

feof- compruebe si ha llegado al final del archivo.

ferror- obtener información sobre el último error durante la entrada-salida.

fgetl- leer una línea de un archivo de texto sin un carácter de final de línea.

fgets- leer una línea de un archivo de texto con un carácter de final de línea.

fopen- abrir un archivo.

fprintf- grabación formateada en un archivo.

fread- lectura de un archivo binario.

frewind- ir al principio del archivo.

fscanf- lectura formateada de un archivo.

fseek- transición a una posición determinada en el archivo.

ftell- obtener la posición actual en el archivo.

escribir- escribir en un archivo binario.

Todas las funciones para leer datos se enumeran en el tema de ayuda: MATLAB: Funciones - Lista categórica: E / S de archivos.

Cuadro de diálogo Guardar archivo: función uiputfile

El uso de uiputfile es similar al uigetfile discutido anteriormente. Del mismo modo, puede configurar el filtro de extensión, el título de la ventana, el archivo o la ruta predeterminada. La diferencia es que no existe la opción "MultiSelect" en uiputfile (no es necesaria al guardar). Además, si el usuario selecciona un nombre de archivo existente en el cuadro de diálogo para guardar archivo, aparecerá una ventana de confirmación. Si selecciona Sí, finaliza el cuadro de diálogo para guardar el archivo y No vuelve a la ventana para guardar el archivo. Verificar la actividad del usuario y obtener el nombre de archivo completo es exactamente lo mismo que para uigetfile.

Funciones de MATLAB para guardar datos en archivos

Enumeremos las principales funciones de MATLAB diseñadas para guardar datos de varios tipos.

ahorrar- guardar datos en archivos de texto y binarios

Nota.
La función uisave combina las capacidades de uigetfile y save; crea un cuadro de diálogo de guardar archivo que guardará todas las variables de entorno.

csvwrite- escribir datos numéricos en un archivo de texto separados por comas.

dlmwrite- escribir datos numéricos en un archivo de texto a través de un separador específico.

xlswrite- registro de datos en formato MS Excel.

wavwrite- grabación de un archivo wav.

avifile- crea un archivo avi y le devuelve un identificador, que se utiliza en otras funciones: addframe, close.

movie2avi- crear un archivo avi a partir de una matriz, cada columna de la cual almacena información sobre un fotograma (ver funciones: película, getframe, im2frame).

soy escritura- escribir un archivo gráfico.

Además de las funciones enumeradas, hay funciones de bajo nivel para trabajar con archivos cuyos nombres comienzan con la letra f (consulte la sección "Funciones de MATLAB para abrir varios formatos de archivo" más arriba).

Diálogo de selección de directorio - función uigetdir

La función uigetdir abre el cuadro de diálogo Buscar carpeta y devuelve la ruta al directorio seleccionado, o cero si el usuario no ha hecho una elección. La verificación de si se ha seleccionado un directorio se realiza de la misma manera que en la función uigetfile para el diálogo de apertura de archivo. Formas de llamar a uigetdir:

dname = uigetdir- abre el cuadro de diálogo de selección de directorio, en el que se resalta el directorio actual de MATLAB.

dname = uigetdir ("ruta de inicio")- abre un cuadro de diálogo para seleccionar un directorio, en el que se selecciona el directorio especificado, por ejemplo: dname = uigetdir ("c: \").

dname = uigetdir ("ruta de inicio", "texto")- abre un cuadro de diálogo para elegir un directorio, en el que se selecciona el directorio especificado y coloca el texto especificado encima de la ventana con una estructura de directorio jerárquica. Si desea abrir el cuadro de diálogo de selección de directorio, en el que se resalta el directorio MATLAB actual, debe especificar una cadena vacía en lugar del primer argumento de entrada: dname = uigetdir ("", "text").

Funciones de directorio de MATLAB

Otras acciones después de que el usuario selecciona el nombre del directorio asumen el uso de funciones de MATLAB diseñadas para trabajar con directorios.

CD- cambiar el directorio MATLAB actual

dir- mostrar el contenido del directorio en la ventana de comandos o escribir información sobre el contenido en una matriz de estructuras.

camino, rmpath- Gestión de rutas de búsqueda de MATLAB.

Notas.
La función de la herramienta de ruta muestra un cuadro de diálogo especial Establecer ruta para administrar las rutas de búsqueda de MATLAB.
La función del explorador de archivos muestra un cuadro de diálogo Directorio actual especial con el contenido del directorio actual, la capacidad de seleccionar un nuevo directorio actual y abrir archivos en MATLAB.

Todas las funciones para trabajar con directorios en MATLAB se enumeran en el sistema de ayuda en MATLAB: Funciones - Lista categórica: Herramientas de escritorio y entorno de desarrollo: Espacio de trabajo, Ruta de búsqueda y Operaciones de archivo.

Cuadro de diálogo de selección de fuente: función uisetfont

La función uisetfont se puede utilizar para dos propósitos:
1) crear un cuadro de diálogo para elegir una fuente y registrar información sobre la fuente seleccionada (nombre, tamaño, estilo) en la estructura;
2) crear un cuadro de diálogo para elegir una fuente y cambiar objetos de texto, etiquetas de eje o controles de acuerdo con la configuración realizada en esta ventana.

S = uisetfont- conduce a la aparición de un cuadro de diálogo para elegir una fuente y, si se hizo una elección en él, se devuelve la estructura S, cuyos campos tienen el siguiente significado:

S.FontName - cadena con el nombre de la fuente; S.FontUnits - unidades de medida ("puntos"); S.FontSize - tamaño; S.FontWeight - negrita ("normal" o "negrita"); S.FontAngle - tipo de letra ("normal" o "cursiva").

Si el usuario no seleccionó una fuente y cerró la ventana, entonces S es cero.

S = uisetfont (S0)- conduce a la aparición del cuadro de diálogo de selección de fuente, en el que la fuente predeterminada se selecciona de acuerdo con los valores de los campos de la estructura S0, por ejemplo:

S0.FontName = "Arial"; S0.FontUnits = "puntos"; S0.FontSize = 20; S0.FontWeight = "negrita"; S0.FontAngle = "normal"; S = uisetfont (S0)

S = uisetfont ("Título de la ventana") o S = uisetfont (S0, "Título de la ventana")- al igual que las opciones anteriores, solo la ventana de selección de fuente tiene un título determinado.

uisetfont (h)- llamar al cuadro de diálogo para elegir una fuente para un objeto de texto, ejes o control con un puntero h.

uisetfont (h, "Título de la ventana")- al igual que uisetfont (h), solo la ventana de selección de fuente tiene un título determinado.

S = uisetfont (h), S = uisetfont (h, "Título de la ventana")- al igual que las dos opciones anteriores, solo la información sobre la elección del usuario se devuelve adicionalmente en la estructura S.

Un ejemplo de cambio de fuente de objetos gráficos

hA = ejes; % creando trama de ejes (rand (10))% trazando hT = título ("Gráfico aleatorio")% agregando un título% abriendo un cuadro de diálogo para elegir una fuente para marcar los ejes uisetfont (hA, "Establecer fuente para ejes"); % abre un cuadro de diálogo para elegir una fuente para el título uisetfont (hT, "Establecer fuente para el título"); Cuadro de diálogo selector de color - función uisetcolor

La función uisetcolor, al igual que uisetfont, se puede utilizar para dos propósitos:
1) crear un cuadro de diálogo de selección de color y escribir el color seleccionado en un vector en formato RGB;
2) crear un cuadro de diálogo de selección de color y cambiar los objetos gráficos que tienen una propiedad de Color de acuerdo con la configuración realizada en esta ventana.

C = uisetcolor- creación de un cuadro de diálogo de selección de color (en él, por defecto, el color actual es el blanco) y escritura del color seleccionado en el vector C en formato RGB. Si el usuario no ha hecho una elección, entonces C es cero.

C = uisetcolor (C0)- igual que la opción anterior, solo que en el cuadro de diálogo de selección de color, el color actual lo especifica el vector C0 en RGB. Si el usuario no ha hecho una elección, entonces C es lo mismo que C0.

С = uisetcolor ("Título de la ventana"), С = uisetcolor (С0, "Título de la ventana")- al igual que la opción anterior, solo el cuadro de diálogo de selección de color tiene un título determinado.

uisetcolor (h)- abrir el cuadro de diálogo de selección de color para especificar el color del objeto gráfico con el puntero h (el objeto gráfico debe tener la propiedad Color).

uisetcolor (h, "Título de la ventana")- similar al anterior, pero el cuadro de diálogo tiene un título determinado.

C = uisetcolor (h) o C = uisetcolor (h, "Título de la ventana")- lo mismo que los dos últimos métodos. Además de cambiar el color del objeto, el color seleccionado se escribe en el vector C en formato RGB.

Un ejemplo de cambio de color de objetos gráficos.

hA = ejes; % de creación de ejes% de trazado x = 0: 0.1: 10; y = sin (x); hL = plot (x, y) hT = title ("Gráfico aleatorio")% agregar un título% abrir un cuadro de diálogo para seleccionar un color de línea uisetcolor (hL, "Seleccionar color de línea")% abrir un cuadro de diálogo para seleccionar un título color uisetcolor (hT, "Seleccionar color de título")% abre un cuadro de diálogo para elegir el color de los ejes uisetcolor (hA, "Seleccionar color de los ejes")

Ventana con barra de progreso - función barra de espera

La función de barra de espera crea una ventana con una barra de progreso y le permite actualizarla.

h = barra de espera (x, "texto"): muestra una ventana con una barra de progreso y el texto especificado encima de la barra. La longitud de la barra de progreso es proporcional al valor x, que debe estar entre 0 y 1. El argumento de salida h es un puntero a una ventana gráfica con una barra de progreso.

barra de espera (x, h)- aumenta la longitud de la barra de progreso con el puntero h según el valor de x.

% crea una ventana con una barra de progreso vacía h = barra de espera (0, "Resolviendo problemas de valores propios ..."); para i = 1: 100 A = rand (30); L = eig (A); barra de espera (i / 100)% actualiza la barra de progreso end% elimina la ventana gráfica con la barra de progreso cerrada (h)

El color de la barra se puede cambiar si tenemos en cuenta que la barra es un objeto poligonal, descendiente de ejes, que a su vez son descendientes de la ventana gráfica creada por la función waitbar. Ejemplo:

% crea una ventana con una barra de progreso vacía h = barra de espera (0, "Resolviendo problemas de valores propios ..."); % encuentra un puntero a un objeto poligonal hP = findobj (h, "Tipo", "parche"); % configurando el color del interior y el borde del conjunto de objetos poligonales (hP, "FaceColor", "g", "EdgeColor", "g") para i = 1: 1000 barra de espera (i / 1000, h) fin cerrar ( h)

Las propiedades de la ventana en sí también se pueden cambiar usando un puntero y el hecho de que la función de la barra de espera le permite establecer las propiedades de la ventana en los argumentos de entrada, por ejemplo:

h = barra de espera (0, "Simplemente blanco", "Color", "w", "Nombre", "programa");

Creación de un cuadro de diálogo con botones: función de menú

La función de menú crea una ventana con texto y botones dispuestos en una columna con las etiquetas especificadas. Después de que el usuario hace clic en el botón, su número se devuelve en el argumento de salida de la función del menú.

button = menu ("Seleccionar método", "Newton", "Gauss", "Zeidel")

Si el usuario no ha hecho una elección, entonces button = 0.

Trabajar desde la línea de comandos de MatLab es difícil si necesita ingresar muchos comandos y cambiarlos con frecuencia. Mantener un diario con el comando diario y guardar el entorno de trabajo solo facilita un poco las cosas. La forma más conveniente de ejecutar comandos MatLab es usar Archivos M, en el que puede escribir comandos, ejecutarlos todos a la vez o en partes, guardarlos en un archivo y usarlos más tarde. El editor de archivos M está diseñado para trabajar con archivos M. Con este editor, puede crear sus propias funciones y llamarlas, incluso desde la línea de comandos.

Expandir el menú Expediente de la ventana principal de MatLab y en el párrafo Nuevo seleccionar subelemento Archivo M... El nuevo archivo se abre en la ventana del editor de archivos M.

Escriba los comandos en el editor que conducen a la construcción de dos gráficos en una ventana gráfica:

x =;
f = exp (-x);
subtrama (1, 2, 1)
trama (x, f)
g = sin (x);
subtrama (1, 2, 2)
parcela (x, g)

Guarde ahora un archivo llamado mydemo.m en un subdirectorio trabaja del directorio principal de MatLab seleccionando el elemento Guardar como menú Expediente editor. Para ejecutar todos los comandos contenidos en el archivo para su ejecución, seleccione el elemento Correr en el menú Depurar. Aparecerá una ventana gráfica en la pantalla. Figura No 1, que contiene gráficas de funciones. Si decide graficar el coseno en lugar del seno, simplemente cambie la línea g = sin (x) en el archivo M a g = cos (x) y ejecute todos los comandos nuevamente.

Observación 1

Si se comete un error al escribir y MatLab no puede reconocer el comando, los comandos se ejecutan hasta que se ingresa incorrectamente, después de lo cual se muestra un mensaje de error en la ventana de comandos.

Una característica muy conveniente proporcionada por el editor de archivos M es ejecución de algunos comandos. Cerrar la ventana gráfica Figura No 1. Seleccione con el mouse mientras mantiene presionado el botón izquierdo, o con las teclas de flecha mientras mantiene presionado , los primeros cuatro comandos del programa y ejecutarlos desde el punto Evaluar Selección menú Texto. Tenga en cuenta que solo se muestra un gráfico en la ventana gráfica, correspondiente a los comandos ejecutados. Recuerda que para ejecutar algunos de los comandos, selecciónalos y presiona ... Ejecute los tres comandos restantes del programa y supervise el estado de la ventana gráfica. Practíquelo usted mismo, escriba cualquier ejemplo de prácticas de laboratorio anteriores en el editor de archivos M y ejecútelo.

Se pueden suministrar bloques individuales de la lima M comentarios que se omiten durante la ejecución, pero son convenientes cuando se trabaja con un archivo M. Los comentarios en MatLab comienzan con un signo de porcentaje y se resaltan automáticamente en verde, por ejemplo:

% trazando sin (x) en una ventana separada

Se pueden abrir varios archivos al mismo tiempo en el editor de archivos M. La transición entre archivos se realiza utilizando los marcadores con nombres de archivo ubicados en la parte inferior de la ventana del editor.

La apertura de un archivo M existente se realiza utilizando el elemento Abierto menú Expediente entorno de trabajo, o el editor de archivos M. También puede abrir el archivo en el editor usando el comando de edición MatLab desde la línea de comando, especificando el nombre del archivo como argumento, por ejemplo:

El comando de edición sin un argumento crea un nuevo archivo.
Todos los ejemplos que se encuentran en esta y las siguientes prácticas de laboratorio se escriben y guardan mejor en archivos M, se complementan con comentarios y se ejecutan desde el editor de archivos M. La aplicación de métodos numéricos y programación en MatLab requiere la creación de archivos M.

2. Tipos de archivos M

Hay dos tipos de archivos M en MatLab: Archivo de programa(Archivos M de secuencia de comandos) que contienen una secuencia de comandos, y funciones de archivo(Archivos M de funciones), que describen funciones definidas por el usuario.

Creó un archivo de programa (archivo de procedimiento) cuando leyó la subsección anterior. Todas las variables declaradas en el archivo del programa pasan a estar disponibles en el entorno de producción después de su ejecución. Ejecute el programa de archivo que se muestra en la subsección 2.1 en el editor de archivos M? Y escriba quién en la línea de comando para ver el contenido del entorno de trabajo. La descripción de las variables aparecerá en la ventana de comandos:

"Quien
Nombre Tamaño Bytes Clase
f 1x71568 doble matriz
g 1x71568 doble matriz
x 1x71568 doble matriz
El gran total es 213 elementos usando 1704 bytes

Las variables definidas en un archivo de programa se pueden utilizar en otros programas de archivo y en comandos ejecutados desde la línea de comandos. La ejecución de los comandos contenidos en el programa de archivos se realiza de dos formas:

  • Desde el editor de archivos M como se describe arriba.
  • Desde la línea de comando u otro archivo de programa, mientras que el nombre del archivo M se usa como comando.

El uso del segundo método es mucho más conveniente, especialmente si el archivo de programa creado se usará repetidamente más adelante. De hecho, el archivo M generado se convierte en un comando que MatLab comprende. Cierre todas las ventanas gráficas y escriba mydemo en la línea de comando, aparecerá una ventana gráfica correspondiente a los comandos en el archivo de programa mydemo.m. Después de ingresar el comando mydemo MatLab realiza las siguientes acciones.

  • Comprueba si el comando introducido es el nombre de alguna de las variables definidas en el entorno de producción. Si se ingresa una variable, se muestra su valor.
  • Si no se ingresa una variable, MatLab busca el comando ingresado entre las funciones integradas. Si el comando resulta ser una función incorporada, entonces se ejecuta.

Si no se ingresa una variable o una función incorporada, MatLab comienza a buscar un archivo M con el nombre y la extensión del comando metro... La búsqueda comienza con directorio actual(Directorio actual), si el archivo M no se encuentra en él, MatLab busca los directorios instalados en rutas de búsqueda(Sendero). El archivo M encontrado se ejecuta en MatLab.

Si ninguna de las acciones anteriores tuvo éxito, se muestra un mensaje en la ventana de comandos, por ejemplo:

»Mydem
??? Función o variable indefinida "mydem".

Normalmente, los archivos M se almacenan en el directorio del usuario. Para que MatLab los encuentre, debe establecer las rutas que indiquen la ubicación de los archivos M.

Observación 2

Debe mantener sus propios archivos M fuera del directorio principal de MatLab por dos razones. Primero, al reinstalar MatLab, los archivos que están contenidos en los subdirectorios del directorio principal de MatLab pueden destruirse. En segundo lugar, al iniciar MatLab, todos los archivos del subdirectorio de la caja de herramientas se colocan en la memoria de la computadora de una manera óptima para aumentar el rendimiento del trabajo. Si ha escrito el archivo M en este directorio, será posible usarlo solo después de reiniciar MatLab.

3. Marcando caminos

En las versiones 6 de MatLab .X se determinan el directorio actual y las rutas de búsqueda. Estas propiedades se establecen mediante los cuadros de diálogo correspondientes o mediante comandos de la línea de comandos.

El directorio actual se determina en un cuadro de diálogo Actual Directorio ambiente de trabajo. La ventana está presente en el entorno de trabajo si se selecciona el elemento Actual Directorio menú Vista ambiente de trabajo.
El directorio actual se selecciona de la lista. Si no está en la lista, se puede agregar desde el cuadro de diálogo Navegar por Carpeta, llamado haciendo clic en el botón ubicado a la derecha de la lista. El contenido del directorio actual se muestra en la tabla de archivos.

Las rutas de búsqueda se definen en el cuadro de diálogo Colocar Sendero navegador de ruta, se accede desde el punto Colocar Sendero menú Expediente ambiente de trabajo.

Para agregar un directorio, haga clic en el botón Agregar Carpeta Navegar por Sendero seleccione el directorio requerido. La adición de un directorio con todos sus subdirectorios se realiza haciendo clic en el botón Agregar con subcarpetas. MATLAB buscar sendero. El orden de búsqueda corresponde a la ubicación de las rutas en este campo, con el directorio ubicado en la parte superior de la lista mirando primero. El orden de búsqueda se puede cambiar o la ruta a un directorio se puede eliminar por completo, para lo cual seleccione el directorio en el campo MATLAB buscar sendero y determine su posición usando los siguientes botones:
Moverse para Cima - moverse al principio de la lista;
Moverse Hasta - subir una posición;
Eliminar - eliminar de la lista;
Moverse Abajo - bajar una posición;
Moverse para Fondo - poner al final de la lista.

4. Comandos para establecer rutas.

Pasos para establecer rutas en MatLab 6 .X duplicado por comandos. El directorio actual se establece con el comando cd, por ejemplo cd c: \ users \ igor. El comando cd, invocado sin un argumento, imprime la ruta al directorio actual. Para establecer rutas, use el comando ruta, invocado con dos argumentos:

ruta (ruta, "c: \ usuarios \ igor"): agrega el directorio c: \ usuarios \ igor con la prioridad de búsqueda más baja;
ruta ("c: \ usuarios \ igor", ruta): agrega el directorio c: \ usuarios \ igor con la prioridad de búsqueda más alta.

El uso del comando de ruta sin argumentos da como resultado una lista de rutas de búsqueda que se muestran en la pantalla. Puede eliminar una ruta de la lista con el comando rmpath:

rmpath ("c: \ users \ igor") elimina la ruta al directorio c: \ users \ igor de la lista de rutas.

Observación 3

No elimine rutas a directorios innecesariamente, especialmente aquellos cuyo propósito no está seguro. La eliminación puede llevar al hecho de que algunas de las funciones definidas en MatLab dejarán de estar disponibles.

Ejemplo. Crear en el directorio raíz del disco. D(o cualquier otro disco o directorio donde los estudiantes puedan crear sus propios directorios) un directorio con su apellido, por ejemplo WORK_IVANOV, y escriba el archivo M mydemo.m bajo el nombre mydemo3.m allí. Establezca las rutas al archivo y demuestre que se puede acceder al archivo desde la línea de comandos. Informe los resultados en el informe de laboratorio.

Opción de solución:

1. En el directorio raíz del disco D se crea el directorio WORK_IVANOV.
2. El archivo M mydemo.m con el nombre mydemo3.m se escribe en el directorio WORK_IVANOV.
3. Se abre un cuadro de diálogo. Colocar Sendero menú Expediente entorno de trabajo MatLab.
4. Se presiona el botón Agregar Carpeta y en el diálogo que aparece Navegar por Sendero se selecciona el directorio WORK_IVANOV.
5. La adición de un directorio con todos sus subdirectorios se realiza presionando el botón Agregar con Subcarpetas. La ruta al directorio agregado aparece en el campo MATLAB buscar sendero.
6. Para memorizar la ruta, presione la tecla Ahorrar caja de diálogo Colocar Sendero.
7. Verificando la corrección de todas las acciones escribiendo el comando mydemo3 desde la línea de comando. Aparecerá una ventana gráfica en la pantalla.

5. Funciones de archivo

Los programas de archivo anteriores son una secuencia de comandos MatLab, no tienen argumentos de entrada y salida. Para usar métodos numéricos y al programar sus propias aplicaciones en MatLab, necesita poder componer funciones de archivo que realicen las acciones necesarias con argumentos de entrada y devuelvan el resultado en argumentos de salida. En esta subsección, se analizan algunos ejemplos simples para ayudarlo a comprender cómo trabajar con funciones de archivo. Las funciones de archivo, como los procedimientos de archivo, se crean en el editor de archivos M.

5.1. Funciones de archivo con un argumento de entrada

Suponga que en los cálculos a menudo es necesario utilizar la función

Tiene sentido escribir una función de archivo una vez y luego llamarla donde sea necesario para evaluar esta función. Abra un nuevo archivo en el editor de archivos M y escriba el texto de la lista

función f = myfun (x)
f = exp (-x) * sqrt ((x ^ 2 + 1) / (x ^ 4 + 0.1));

La palabra función en la primera línea especifica que este archivo contiene un archivo de función. La primera línea es encabezado de función, que anfitriones nombre de la función y listas de argumentos de entrada y salida. En el ejemplo que se muestra en la lista, el nombre de la función es myfun, un argumento de entrada es x y una salida es f. El título va seguido de función cuerpo(en este ejemplo, consta de una línea), donde se calcula su valor. Es importante que el valor calculado se escriba en f. Se incluye un punto y coma para evitar que se muestre información innecesaria en la pantalla.

Ahora guarde el archivo en su directorio de trabajo. Tenga en cuenta que la selección del artículo Ahorrar o Ahorrar como menú Expediente conduce a la aparición de un cuadro de diálogo para guardar el archivo, en el campo Expediente nombre que ya contiene el nombre myfun. No lo cambie, guarde el archivo de función en un archivo con el nombre sugerido.

Ahora la función creada se puede usar de la misma manera que la incorporada sin, cos y otras, por ejemplo, desde la línea de comando:

"Y = myfun (1.3)
Y =
0.2600

Las funciones propias se pueden llamar desde un archivo de programa y desde otra función de archivo.

Una advertencia

El directorio que contiene el archivo de función debe ser actual, o la ruta debe agregarse a las rutas de búsqueda, de lo contrario, MatLab simplemente no encontrará la función, o llamará a otra con el mismo nombre (si se encuentra en los directorios disponibles para buscar).

La función de archivo que se muestra en la lista tiene un inconveniente importante. Intentar calcular valores de función a partir de una matriz da como resultado un error, no una matriz de valores, como sucede cuando se evalúan funciones integradas.

"X =;
"Y = myfun (x)
??? Error al usar ==> ^
La Matrix ha de ser cuadrada.
Error en ==> C: \ MATLABRll \ work \ myfun.m
En la línea 2 ==> f = exp (-x) * sqrt ((x ^ 2 + 1) / (x ^ 4 + 1));

Si ha estudiado el trabajo con matrices, la eliminación de esta deficiencia no causará dificultades. Solo necesita usar operaciones basadas en elementos al calcular el valor de una función.
Modifique el cuerpo de la función como se muestra en la siguiente lista (no olvide guardar los cambios en el archivo myfun.m).

función f = myfun (x)
f = exp (-x). * sqrt ((x. ^ 2 + 1) ./ (x. ^ 4 + 0.1));

Ahora, el argumento de la función myfun puede ser un número o un vector o una matriz de valores, por ejemplo:

"X =;
"Y = myfun (x)
Y =
0.2600 0.0001

La variable y, en la que se escribe el resultado de llamar a la función myfun, se convierte automáticamente en un vector del tamaño requerido.

Grafique la función myfun en un segmento desde la línea de comando o usando un programa de archivo:

x =;
y = myfun (x);
trama (x, y)

MatLab brinda una oportunidad más para trabajar con funciones de archivo, usándolas como argumentos para algunos comandos. Por ejemplo, se utiliza una función especial fplot para trazar un gráfico, que reemplaza la secuencia de comandos mostrada anteriormente. Al llamar a fplot, el nombre de la función cuyo gráfico desea trazar está entre apóstrofos, los límites de trazado se especifican en un vector de fila de dos elementos

fplot ("mi diversión",)

Trace myfun plots con plot y fplot en los mismos ejes con hold. Tenga en cuenta que la gráfica trazada con fplot refleja con mayor precisión el comportamiento de la función, ya que fplot en sí mismo selecciona el paso del argumento, disminuyéndolo en las áreas de cambio rápido de la función mostrada. Informe los resultados en el informe de laboratorio.

5.2. Funciones de archivo con múltiples argumentos de entrada

Escribir funciones de archivo con varios argumentos de entrada es prácticamente lo mismo que en el caso de un argumento. Todos los argumentos de entrada se colocan en una lista separada por comas. Por ejemplo, la siguiente lista contiene una función de archivo que calcula la longitud del vector de radio de un punto en un espacio tridimensional.
Listado de una función de archivo con varios argumentos

función r = radio3 (x, y, z)
r = raíz cuadrada (x. ^ 2 + y. ^ 2 + z. ^ 2);

»R = radio3 (1, 1, 1)
R =
1.732

Además de las funciones con múltiples argumentos de entrada, MatLab le permite crear funciones que devuelven múltiples valores, es decir, tener múltiples argumentos de salida.

5.3. Funciones de archivo con múltiples argumentos de salida

Las funciones de archivo con múltiples argumentos de salida son útiles al evaluar funciones que devuelven múltiples valores (en matemáticas, se llaman funciones vectoriales). Los argumentos de salida se agregan a la lista de argumentos de salida, separados por comas, y la lista en sí se encierra entre corchetes. Un buen ejemplo es una función que convierte un tiempo en segundos en horas, minutos y segundos. Esta función de archivo se muestra en la siguiente lista.

Listado de la función para convertir segundos en horas, minutos y segundos

función = hms (seg)
hora = piso (seg / 3600);
minuto = piso ((seg-hora * 3600) / 60);
segundo = segundos-hora * 3600 minutos * 60;

Al llamar a funciones de archivo con varios argumentos de salida, el resultado debe escribirse en un vector de la longitud adecuada:

"[H, M, S] = hms (10000)
H =
2
M =
46
S =
40

6. Fundamentos de la programación en MatLab

Las funciones de archivo y el archivo de programa utilizados en las subsecciones anteriores son los ejemplos más simples de programas. Todos los comandos de MatLab contenidos en ellos se ejecutan secuencialmente. Para solucionar muchos problemas más graves, es necesario escribir programas en los que las acciones se realicen de forma cíclica o, según determinadas condiciones, se ejecuten varias partes de los programas. Consideremos los principales operadores que establecen la secuencia de ejecución de los comandos de MatLab. Los operadores se pueden utilizar tanto en procedimientos de archivo como en funciones, lo que le permite crear programas con una estructura ramificada compleja.

6.1. Operador de bucle por

El operador está diseñado para realizar un número específico de acciones repetitivas. El uso más simple de la instrucción for es el siguiente:

para count = start: step: final
Comandos de MatLab
fin

Aquí, el recuento es la variable del ciclo, el inicio es su valor inicial, el final es el valor final y el paso es el paso por el cual se incrementa el recuento cada vez que se ingresa al ciclo. El bucle termina tan pronto como el recuento sea mayor que el final. La variable de bucle puede tomar no solo valores enteros, sino también valores reales de cualquier signo. Analicemos el uso del operador de bucle for usando algunos ejemplos típicos.
Sea necesario derivar una familia de curvas para, que viene dada por una función que depende del parámetro para valores de parámetro de -0,1 a 0,1.
Escriba el texto del procedimiento del archivo en el editor de archivos M y guárdelo en el archivo FORdem1.m, y ejecútelo (desde el editor de archivos M o desde la línea de comando escribiendo el comando FORdem1 en él y presionando ):

% programa de archivo para construir una familia de curvas
x =;
para a = -0,1: 0,02: 0,1
y = exp (-a * x). * sin (x);
esperar
trama (x, y)
fin

Observación 4

El editor de archivos M ofrece automáticamente colocar declaraciones dentro del bucle, con sangría desde el borde izquierdo. Aproveche esta oportunidad para la conveniencia de trabajar con el texto del programa.

Como resultado de la ejecución de FORdem1, aparecerá una ventana gráfica que contiene la familia de curvas requerida.

Escribe un archivo de programa para calcular la suma.

El algoritmo para calcular la suma utiliza la acumulación del resultado, es decir al principio la suma es igual a cero ( S= 0), luego en una variable k Se ingresa 1, se calcula 1 / k! se agrega a S y el resultado se ingresa nuevamente en S... Más lejos k aumenta en uno, y el proceso continúa hasta que el último término se convierte en 1/10!. El programa de archivo Fordem2, que se muestra en la siguiente lista, calcula la cantidad requerida.

Listado del programa de archivos Fordem2 para calcular la suma

% programa de archivo para calcular la suma
% 1/1!+1/2!+ … +1/10!

% Poniendo a cero S para acumular la cantidad
S = 0;
% de acumulación del importe en el ciclo
para k = 1:10
S = S + 1 / factorial (k);
Fin
% muestra el resultado en la ventana de comandos S

Escriba el archivo de programa en el editor de archivos M, guárdelo en el directorio actual del archivo Fordem2.m y ejecútelo. El resultado se mostrará en la ventana de comandos, porque en la última línea del archivo del programa S contenido sin punto y coma para generar el valor de la variable S

Tenga en cuenta que el resto de las líneas del archivo de programa, que podrían haber provocado la visualización de valores intermedios, se terminan con un punto y coma para suprimir la salida a la ventana de comandos.

Las dos primeras líneas con comentarios no están separadas accidentalmente por una línea vacía del resto del texto del programa. Son los que se muestran cuando el usuario, utilizando el comando de ayuda desde la línea de comandos, recibe información sobre lo que está haciendo Fordem2.

>> ayuda Fordem2
programa de archivo para calcular la suma
1/1!+1/2!+ … +1/10!

Al escribir programas de archivo y funciones de archivo, ¡no descuide los comentarios!
Todas las variables utilizadas en el archivo de programa están disponibles en el entorno de producción. Son las llamadas variables globales. Por otro lado, todas las variables ingresadas en el entorno de trabajo se pueden utilizar en un archivo de programa.

Considere el problema de calcular la suma, similar al anterior, pero dependiendo de la variable X

Para calcular esta cantidad en el programa de archivo Fordem2, debe cambiar la línea dentro del bucle for a

S = S + x. ^ K / factorial (k);

Antes de iniciar el programa, debe definir la variable X en la línea de comando con los siguientes comandos:

>> x = 1,5;
>> Fordem2
S =
3.4817

Como X puede ser un vector o una matriz, ya que se usaron operaciones elemento por elemento para acumular la suma en el programa de archivos Fordem2.

Antes de iniciar Fordem2, asegúrese de asignar a la variable X algún valor, y para calcular la suma, por ejemplo, de quince términos, deberá realizar cambios en el texto del archivo de programa. Es mucho mejor escribir una función de archivo genérica que tenga un valor como argumentos de entrada X y el límite superior de la suma, y ​​el fin de semana es el valor de la suma S(X). La función de archivo sumN se muestra en la siguiente lista.

Listado de la función de archivo para calcular la suma

función S = sumaN (x, N)
% función de archivo para calcular la suma
% x / 1! + x ^ 2/2! +… + x ^ N / N!
% de uso: S = sumN (x, N)

% puesta a cero S para acumular la cantidad
S = 0;
% de acumulación del importe en el ciclo
para m = 1: 1: N
S = S + x. ^ M / factorial (m);
fin

El usuario puede aprender a usar la función sumN escribiendo help sumN en la línea de comando. La ventana de comando mostrará las primeras tres líneas con comentarios, separados del texto de la función de archivo por una línea vacía.

Tenga en cuenta que las variables de la función de archivo no son globales (m en la función de archivo sumN). Intentar ver el valor de m desde la línea de comando da como resultado un mensaje que indica que m no está definido. Si en el entorno de trabajo hay una variable global con el mismo nombre, definida desde la línea de comando o en el programa de archivo, entonces no está conectada de ninguna manera con la variable local en la función de archivo. Como regla general, es mejor diseñar sus propios algoritmos en forma de funciones de archivo para que las variables utilizadas en el algoritmo no cambien los valores de las mismas variables globales del entorno de trabajo.

Los bucles for se pueden anidar entre sí, mientras que las variables de los bucles anidados deben ser diferentes.

El bucle for es útil para realizar acciones similares repetitivas cuando el número está predeterminado. Un bucle while más flexible le permite sortear esta limitación.

6.2. Mientras que la declaración de bucle

Consideremos un ejemplo para calcular la suma, similar al ejemplo del párrafo anterior. Es necesario encontrar la suma de una serie para un determinado X(expansión de la serie):
.

La suma se puede acumular siempre que los términos no sean demasiado pequeños, digamos más en módulo El bucle for es indispensable aquí, ya que el número de términos no se conoce de antemano. La salida es usar un bucle while, que se ejecuta siempre que se cumpla la condición del bucle:

condición de bucle while
Comandos de MatLab
fin

En este ejemplo, la condición de bucle establece que el término actual es mayor. El signo mayor que (>) se utiliza para registrar esta condición. El texto de la función de archivo mysin que calcula la suma de una serie se muestra en la siguiente lista.

Listado de la función de archivo mysin que calcula la expansión de seno por serie

función S = mysin (x)
% Calcular la expansión del seno por serie
% De uso: y = mysin (x), -pi

S = 0;
k = 0;
while abs (x. ^ (2 * k + 1) / factorial (2 * k + 1))> 1.0e-10
S = S + (-1) ^ k * x. ^ (2 * k + 1) / factorial (2 * k + 1);
k = k + 1;
fin

Tenga en cuenta que el ciclo while, a diferencia de for, no tiene una variable de ciclo, por lo que tuvimos que asignar cero antes de que comenzara el ciclo, y dentro del ciclo aumentamos k en uno.
La condición de bucle while puede contener más que solo el signo>. Para establecer las condiciones para la ejecución del ciclo, también se permiten otras operaciones de la relación, que se indican en la tabla. 1.

Cuadro 1. Operaciones de relación

Las condiciones más complejas se especifican mediante operadores lógicos. Por ejemplo, la condición consiste en el cumplimiento simultáneo de dos desigualdades y, y se escribe utilizando el operador lógico y

y (x> = -1, x< 2)

o equivalentemente con &

(x> = -1) y (x< 2)

Los operadores lógicos y ejemplos de su uso se dan en la tabla. 2.

Tabla 2. Operadores lógicos

Operador

Escribiendo en MatLab

Notación equivalente

"Y" lógico

y (x< 3, k == 4)

(X< 3) & (k == 4)

"O" lógico

O (x == 1, x == 2)

(x == 1) | (x == 2)

Negar "NO"

Al calcular la suma de una serie infinita, tiene sentido limitar el número de términos. Si la serie diverge debido al hecho de que sus miembros no tienden a cero, es posible que nunca se cumpla la condición para un valor pequeño del término actual y el programa se repetirá. Realice la suma agregando un límite en el número de términos a la condición del ciclo while de la función de archivo mysin:

mientras que (abs (x. ^ (2 * k + 1) / factorial (2 * k + 1))> 1.0e-10) & (k<=10000))

o en forma equivalente

while y (abs (x. ^ (2 * k + 1) / factorial (2 * k + 1))> 1.0e-10), k<=10000)

La organización de acciones repetitivas en forma de bucles hace que el programa sea simple y comprensible; sin embargo, a menudo se requiere ejecutar uno u otro bloque de comandos dependiendo de ciertas condiciones, p. Ej. utilizar la ramificación del algoritmo.

6.3. Declaración if condicional

Operador condicional si permite crear un algoritmo de ramificación para ejecutar comandos, en el que, cuando se cumplen determinadas condiciones, funciona el correspondiente bloque de operadores o comandos MatLab.

La instrucción if puede usarse en su forma simple para ejecutar un bloque de comandos cuando se cumple una determinada condición, o en una construcción if-elseif-else para escribir algoritmos de ramificación.
Deje que se evalúe la expresión. Suponga que está realizando cálculos en el área del reino y desea mostrar una advertencia de que el resultado es un número complejo. Antes de evaluar la función, debe verificar el valor del argumento x e imprimir una advertencia en la ventana de comandos si el módulo x no excede uno. Aquí es necesario usar el operador condicional si, cuya aplicación en el caso más simple se ve así:

si condición
Comandos de MatLab
fin

Si se cumple la condición, se implementan los comandos de MatLab colocados entre if y end, y si no se cumple la condición, se produce la transición a los comandos ubicados después de end. Al registrar una condición, se utilizan las operaciones que se muestran en la tabla. 1.

La función de archivo que verifica el valor del argumento se muestra en la siguiente lista. El comando de advertencia se utiliza para mostrar una advertencia en la ventana de comandos.

Listado de la función del archivo Rfun que verifica el valor del argumento

función f = Rfun (x)
% calcula la raíz cuadrada (x ^ 2-1)
% muestra una advertencia si el resultado es complejo
% de uso y = Rfun (x)

% comprobar argumento
si abs (x)<1
advertencia ("el resultado es complejo")
fin
% evaluación de función
f = raíz cuadrada (x ^ 2-1);

Ahora, llamar a Rfun con un argumento menor que uno generará una advertencia en la ventana de comandos:

>> y = Rfun (0,2)
el resultado es complejo
y =
0 + 0,97979589711327i

El archivo de función Rfun solo advierte que su valor es complejo y todos los cálculos continúan con él. Si el resultado complejo significa un error de cálculo, entonces la función debe terminarse usando el comando de error en lugar de la advertencia.

6.4. Operador de ramificación if-elseif-else

En general, la aplicación del operador de sucursal if-elseif-else es la siguiente:

si la condición 1
Comandos de MatLab
elseif condición 2
Comandos de MatLab
elseif condición 3
Comandos de MatLab
. . . . . . . . . . .
elseif condición N
Comandos de MatLab
demás
Comandos de MatLab
fin

Dependiendo del desempeño de uno u otro de norte condiciones, la rama correspondiente del programa se ejecuta si ninguno de los norte condiciones, entonces se implementan los comandos de MatLab colocados después de else. Después de la ejecución de cualquiera de las ramas, el operador sale. Puede haber tantas ramas como desee, o solo dos. En el caso de dos ramas, se usa el elseif final y se omite el elseif. La declaración siempre debe terminar con final.
En la siguiente lista se muestra un ejemplo del uso del operador if-elseif-else.

función ifdem (a)
% ejemplo de uso del operador if-elseif-else

si (a == 0)
advertencia ("igual a cero")
elseif a == 1
advertencia ("es igual a uno")
elseif a == 2
advertencia ("igual a dos")
elseif a> = 3
advertencia ("a, es mayor o igual a tres")
demás
advertencia ("a es menor que tres y no es igual a cero, uno, dos")
fin

6.5. Operador de sucursal cambiar

La instrucción de cambio se puede utilizar para realizar una selección múltiple o bifurcación. . Es una alternativa al operador if-elseif-else. En general, la aplicación del conmutador de operador de bifurcación se ve así:

cambiar switch_expression
valor de caso 1
Comandos de MatLab
valor de caso 2
Comandos de MatLab
. . . . . . . . . . .
valor de caso N
Comandos de MatLab
caso (valor N + 1, valor N + 2, ...)
Comandos de MatLab
. . . . . . . . . . . .
caso (valor NM + 1, valor NM + 2, ...)
de lo contrario
Comandos de MatLab
fin

En este operador, primero se evalúa el valor de switch_expression (puede ser un valor numérico escalar o una cadena de caracteres). Este valor se compara luego con los siguientes valores: valor 1, valor 2,…, valor N, valor N + 1, valor N + 2,…, valor NM + 1, valor NM + 2,… (que también puede ser numérico o cuerda) ... Si se encuentra una coincidencia, se ejecutan los comandos de MatLab después de la palabra clave de caso correspondiente. De lo contrario, se ejecutan los comandos de MatLab ubicados entre las palabras clave else y end.

Puede haber cualquier número de líneas con la palabra clave case, pero debe haber una línea con la palabra clave else.

Después de la ejecución de cualquiera de las ramas, se sale del conmutador, mientras que los valores especificados en otros casos no se comprueban.

El siguiente ejemplo ilustra el uso de switch:

función demswitch (x)
a = 10/5 + x
cambiar un
caso 1
advertencia ("a = -1")
caso 0
advertencia ("a = 0")
caso 1
advertencia ("a = 1")
caso (2, 3, 4)
advertencia ("a es 2 o 3 o 4")
de lo contrario
advertencia ("a no es igual a -1, 0, 1, 2, 3, 4")
fin

>> x = -4
Demswitch (x)
a =
1
advertencia: a = 1
>> x = 1
Demswitch (x)
a =
6
advertencia: a no es igual a -1, 0, 1, 2, 3, 4

6.6. Declaración de interrupción de bucle rotura

Al organizar cálculos cíclicos, se debe tener cuidado para evitar errores dentro del ciclo. Por ejemplo, suponga que se le da una matriz x que consta de números enteros y necesita formar una nueva matriz y de acuerdo con la regla y (i) = x (i + 1) / x (i). Obviamente, la tarea se puede realizar utilizando un bucle for. Pero si uno de los elementos de la matriz original es igual a cero, entonces la división dará como resultado inf y los cálculos posteriores pueden ser inútiles. Esta situación se puede prevenir saliendo del bucle si el valor actual de x (i) es igual a cero. El siguiente fragmento de código demuestra el uso de la instrucción break para interrumpir un bucle:

para x = 1:20
z = x-8;
si z == 0
rotura
fin
y = x / z
fin

Tan pronto como z se convierte en 0, el bucle se aborta.

La instrucción break le permite interrumpir prematuramente la ejecución de bucles for y while. Fuera de estos bucles, la declaración de interrupción no funciona.

Si la instrucción break se usa en un bucle anidado, solo sale del bucle interno.