2009-02-10 9 views
8

Sto scrivendo un file mex Matlab. Tuttavia, i file di messaggistica sembrano avere una seria limitazione: help mexfilename non farà apparire un testo di aiuto.Come aggiungere "help" -text a una funzione mex?

Potrei aggirare questo problema scrivendo un m-file, che alla fine chiama il file mex, ma include l'aiuto, ma deve esserci un modo migliore.

D'altra parte, in questo modo ho potuto fare tutto il controllo degli errori nel m-file, dove è molto più conveniente di farlo ...

risposta

10

Credo che PierreBdR abbia ragione; creeresti una versione m-file della tua funzione con solo la chiamata di intestazione e il blocco dei commenti, ma senza corpo.

Potrebbe non essere una cattiva idea mettere il controllo degli errori per gli ingressi nel m-file, quindi fare in modo che il m-file invochi il file mex (potrebbe essere necessario dare loro nomi diversi, però). Potrebbe essere più semplice controllare le variabili in MATLAB (usando, ad esempio, built-in come nargchk) e inserirle in un formato standard che si possa sempre desiderare di avere gli input della funzione mex. Molte delle funzioni di Image Processing Toolbox che ho guardato sembrano farlo (formattazione e controllo dei dati nel m-file, quindi eseguire i costosi calcoli in un file di mess).

+3

Mi rendo conto che questo è vecchio, ma avendo appena seguito il consiglio qui - ho trovato che il file 'm' doveva trovarsi nella stessa cartella del file' mex', altrimenti Matlab ha dato la priorità del file 'm' vuoto e non ha fatto nulla! – n00dle

+1

@ianhales: di solito metto il file M (con gli argomenti di input che analizzano e controllano) sul percorso e il file MEX (che esegue il calcolo reale) in una cartella adiacente 'private'. Ad esempio, avresti '/ path/to/myfcn.m' e'/path/to/private/myfcn_mex.m' (assumendo che '/ path/to' sia aggiunto al path), con' myfcn' che chiama la funzione MEX privata – Amro

5

È necessario creare un m-file (name.m) con lo stesso nome del file mex (nome.c). Quindi, inserisci la dichiarazione della funzione e il testo di aiuto, ma non il corpo della funzione. Esempio:

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