2009-02-10 19 views
8

Estoy escribiendo un archivo mexicano Matlab. Sin embargo, los mex-files parecen tener una seria limitación: help mexfilename no hará que aparezca un texto de ayuda.¿Cómo agregar texto de "ayuda" a una función mex?

Pude eludir esto al escribir un archivo m, que finalmente llama al archivo mex, pero incluye ayuda, pero tiene que haber una manera mejor.

Por otro lado, de esa manera que pude hacer toda la comprobación de errores en el archivo-m, donde es mucho más conveniente hacerlo ...

Respuesta

10

Creo que PierreBdR tiene razón; crearía una versión m-file de su función con solo el bloque de llamada y comentario de encabezado, pero sin cuerpo.

Puede que no sea una mala idea colocar la comprobación de errores para las entradas en el archivo m, luego hacer que el archivo m invoque el archivo mex (aunque tal vez tenga que darles otros nombres). Puede ser más simple verificar las variables en MATLAB (usando, por ejemplo, integradas como nargchk) y ponerlas en un formato estándar que siempre quiera que tengan las entradas a la función mex. Muchas de las funciones de la Caja de herramientas de procesamiento de imágenes que he analizado parecen hacer esto (formatear y verificar datos en el archivo m y luego hacer los costosos cálculos en un archivo mex).

+3

Me doy cuenta de que esto es viejo, pero acabo de seguir los consejos aquí: encontré que el archivo 'm' tenía que estar en la misma carpeta que el archivo' mex'; de lo contrario, Matlab dio la prioridad de archivo 'm' vacía y no hizo nada! – n00dle

+1

@ianhales: normalmente pongo el archivo M (con los argumentos de entrada analizando y comprobando) en la ruta, y el archivo MEX (haciendo el cálculo real) en una carpeta adyacente 'privada'. Por ejemplo, tendría '/ path/to/myfcn.m' y'/path/to/private/myfcn_mex.m' (asumiendo que '/ path/to' se agrega a la ruta), con la llamada' myfcn' la función MEX privada – Amro

5

Tienes que crear un archivo-m (name.m) con el mismo nombre que su mex-file (name.c). Luego, coloca la declaración de función y el texto de ayuda, pero no el cuerpo de la función. Ejemplo:

function [o1,o2] = MyFct(i1,i2,i3) 
% MyFct takes 3 arguments and returns 2 ...  
Cuestiones relacionadas