2010-03-31 17 views
6

En MATLAB, al hacer clic en Archivo -> Nuevo -> Función M-File, se obtiene un archivo con el siguiente contenido:Cómo reemplazar el texto predeterminado en MATLAB

function [ output_args ] = Untitled(input_args) 
%UNTITLED Summary of this function goes here 
% Detailed explanation goes here 


end 

¿Es posible anular este comportamiento, y especifica tu propio texto?

(La motivación es que estoy tratando de convencer a mis colegas para documentar sus archivos-m más a fondo, y tener texto predeterminado para que llenen podría alentar a ellos.)

+0

¿Qué versión de MATLAB es esta? – Jacob

+0

@Jacob: funciona en 'R2008b' (y posterior), pero no en' R2007b'. No tengo el 'R2008a' a mano para verificar. –

+0

Es negativo en R2008a. – Adrian

Respuesta

6

Yo ni siquiera sabía Archivo-> Nuevo-> Función hizo eso.

La forma en que resolvió el problema era escribir una función que se llama a través de

>>newFunction myNewFunctionName 

A continuación,

  1. aparece una ventana InputDlg, que pide al usuario la sinopsis y el H1 línea y permite escribir ya ayuda para explicar los argumentos de entrada y salida. Allí, el usuario también selecciona si myNewFunctionName es una función o una clase con el fin de elegir el encabezado derecho y 'llamada a la función'
  2. comprueba si una función del mismo nombre ya existe
  3. pide una carpeta para guardar la función y
  4. abre la función en el editor de

la cabecera está configurado de modo que es fácil de rellenar información sobre la entrada y salida. También enumera automáticamente el nombre de usuario de la persona que creó el archivo, así como la fecha y la versión de Matlab.

EDITAR Para las nuevas clases, la función de plantilla automáticamente se asegura que subclasifican mi superclase en general que implementa métodos tales como 'ayuda' (que llama a doc(class(obj)))

Ahora bien, si la functionwould plantilla también escribir el algoritmo parte de la función, sería realmente conveniente. :)

Edit2 Here 's un enlace a la función en el intercambio de archivos.

+0

Gracias, esa es una solución bastante novedosa. Tal vez una GUI de escritor de funciones podría implementar esto muy bien. Sin embargo, creo que es importante no subestimar la pereza/odio del factor documentación. Todavía parece más esfuerzo que hacer clic en Archivo-> Nuevo-> Función-con-cosas-escritas-para-mí. –

+0

@Richie Cotton: la función se llama como 'codeTemplate myNewFunction' y luego le pide al usuario la entrada adicional a través de inputdlg. Necesito la línea H1 para que haya documentación mínima – Jonas

+0

@Richie Cotton: actualicé un poco mi respuesta. No creo que esto sea más complicado que hacer clic en Archivo-> Nueva-> Función, aunque podría omitir el paso donde aparece la ventana de diálogo. Sin embargo, aparte de requerir la línea H1, en realidad es menos trabajo que el valor predeterminado de Matlab, ya que no es necesario reemplazar 'sin título' con 'myFunctionName' en todas partes. – Jonas

2

Sugeriría crear su propia plantilla de archivo m predeterminada, llamada default.m por ejemplo, y colocarla en una carpeta en el donde sus colegas puedan acceder a ella. Luego debe configurar el archivo para que sea de solo lectura. Sus colegas pueden ejecutar cualquiera de los siguientes comandos en la ventana de comandos de MATLAB cuando quieren crear una función nuevo archivo-m:

open default.m 
open('default.m') 
edit default.m 
edit('default.m') 

Las funciones OPEN y EDIT se abrirá un archivo en el editor de MATLAB. Como el archivo default.m es de solo lectura, si alguien intenta guardarlo, recibirá un cuadro de diálogo que lo advierte y le pide que lo guarde en un nuevo archivo (o lo sobrescriba). Eso debería evitar que accidentalmente se modifique la plantilla.

+0

@gnovice: Me gusta que esto no sea intrusivo, y que sea fácil de hacer. Sin embargo, tiene la desventaja de requerir al usuario que complete manualmente todo. –

1

Busqué en todos los archivos de texto desde la carpeta matlabroot, pero no pude encontrar esa plantilla. Parece que está codificado, lo cual es extraño.

Me gusta Jonas approach. Como mis dos centavos, puedes descargar una función (no la mía) haciendo cosas similares con algunas personalizaciones desde here.

+0

@ yuk: ese segundo enlace se bloquea por mi filtro de Internet, que dice ser un malware; ¿estás seguro de que es correcto? –

+0

@Richie: Abierto bien desde mi trabajo y mi hogar. Es solo un blog de Matlab: http://msbs.ca/matlab/ – yuk

+0

Debe ser un filtro excesivamente entusiasta en el trabajo; se abre bien en casa. El uso de 'com.mathworks.mlservices.MLEditorServices.newDocument (str)' para poner la plantilla directamente en el editor es interesante. –

0

Después de reflexionar más, he encontrado una solución con la que estoy contento, combinando las respuestas de Jonas y gnovice. Es una función que crea un nuevo archivo m (con documentación de plantilla) y lo abre en el editor. Está disponible en Matlab Central File Exchange.

Cuestiones relacionadas