proyectos ejemplos matlab bsxfun

ejemplos - Tutorial de MATLAB para programadores



django (5)

Pronto recibiré nuevos estudiantes, que escribirán el código MATLAB. Son nuevos en MATLAB, pero tienen una experiencia de codificación en Java y C ++.

Haré que reparen la sección de Introducción de la ayuda de MATLAB. Además, quiero dar un pequeño tutorial con el objetivo de evitar que cometan algunos de los errores más comunes que cometen las personas al cambiar a MATLAB (p. Ej., "MATLAB comienza a contar a 1") y mostrarles algunas características que pueden no tener. tenga en cuenta que proviene de otros idiomas (por ejemplo, "puede restar un escalar directamente de un conjunto, y para los vectores, hay bsxfun").

¿Cuáles son las cosas más importantes que debería decirles?


Bastante comentarios bruscos, aquí también hay algo de respuesta:

  1. El escritorio de Matlab: para qué sirven todas las ventanas, arrastrando el código del historial a la ventana de comandos, el inspector de variables, etc.
  2. Trazado: no solo el comando de trazado, sino cómo utilizar las herramientas de GUI de trazado y cómo crear un archivo M a partir de un gráfico.
  3. M-archivos para scripts y funciones, y las diferencias clave entre ellos.
  4. M-Lint, el perfilador.
  5. Use Matlab como un vehículo para enseñar los peligros y las trampas de la aritmética de coma flotante.
  6. Obteniendo ayuda: en la línea de comando, en la web, documentación, intercambio de archivos, ...
  7. Establecer ruta y el directorio de trabajo actual.
  8. Importar datos de archivos, exportar datos a archivos, cargar y guardar.

Eso debería ser suficiente para mantenerlos ocupados durante una hora más o menos.

Para aclarar, propongo estos temas para ayudarlo a enseñar a sus alumnos a evitar los errores comunes de Matlab, entre ellos;

  1. Uso improductivo de la herramienta, reescribiendo comandos que pueden recuperarse fácilmente de la historia, utilizando comandos de lectura de archivos de estilo C (o Java) en lugar de uuimport, escribiendo lentamente guiones para dibujar gráficos cuando Matlab puede hacerlo por usted, preguntándose qué es todo las líneas naranjas en el editor significan margen derecho y lo subrayan de forma ondulada, tratando de resolver las cosas por sí mismos cuando las instalaciones de ayuda podrían decirles, toneladas de otras cosas que muchos más experiencia que los usuarios de Matlab han tardado años en aprender.
  2. La aritmética de coma flotante no es real.
  3. y probablemente muchas otras cosas también.

Con respecto a las características inesperadas o no intuitivas de MATLAB que pueden causar confusión, hay algunos buenos consejos en esta pregunta:

Con respecto a trucos interesantes de ahorro de tiempo / eficiencia, esta otra pregunta tiene algunos buenos ejemplos:

Y para algunos temas potencialmente más avanzados, puede consultar las respuestas a esta pregunta:

Ahora por mi $ 0.02. Basado en el tipo de preguntas que he visto con más frecuencia en SO, diría que querrá asegurarse de que entienden bien los siguientes conceptos:

Y aquí hay algunas características interesantes que ya están implementadas en MATLAB que pueden ahorrarles algo de tiempo y esfuerzo:


Estoy de acuerdo con las respuestas anteriores, pero diría que la indexación es el primer y más importante y complejo concepto al estudiar MATLAB. Vi muchos programadores de C que comenzaban con MATLAB simplemente escriben bucles, muchos bucles, algo ridículo como

for i=1:10 a(i)=i; end

en lugar de simple a=1:10; .

Así que les sugiero que lean sobre conceptos de programación matricial:

  • Cómo crear vectores simples y matrices
  • Qué variables se pueden usar para indexar
  • Cómo crear y aplicar índices
  • Operaciones lógicas y funciones, índices lógicos y numéricos (función de búsqueda)
  • Indización del lado derecho e izquierdo de la expresión
  • Diferencia entre matrices numéricas de indexación y matrices de celdas
  • Cómo usar los índices como salida de diferentes funciones, como sort, unique, ismember, etc.
  • No puede aplicar índices a resultados intermedios

En cuanto a la productividad, agregaría que saber usar el modo de celda del editor es muy útil.


MATLAB es conceptualmente en cierto modo muy diferente de otros idiomas que usted mencionó:

  • las células se utilizan si Java utiliza upcasting
  • global variables global y persistent son static en Java
  • maneja gui siendo solo números de tipo double
  • las funciones anidadas son closures , ni Java ni C / C ++ tienen dicha característica
  • rara vez se utilizan carpetas private y @TYPE para el alcance de la visibilidad
  • trucos de manejo de matriz
  • muy fácil interoperabilidad con Java / COM / .Net usando la sintaxis de MATLAB
  • argumentos de función variadica , manejo de argumentos de función con varargin / varargout
  • management memory

Para aquellos que provienen de los lenguajes de la familia C, los operadores de elementos son nuevos. Me tomó un par de meses descubrir los operadores ./ y .* . Antes de eso, solía escribir bucles para operaciones basadas en elementos. Entonces quizás eso es algo que debería señalarse.