9

Sto utilizzando uno script MATLAB per ottimizzare il sistema di controllo su una macchina. Una volta completata la sintonizzazione, desidero un report contenente testo (in particolare numero di serie, data/ora e valori determinati durante l'ottimizzazione) e grafici, in particolare le funzioni di trasferimento.Come creare report contenenti testo e figure con MATLAB

Cosa consiglia?

Qualunque soluzione io uso dovrebbe essere compatibile con il compilatore MATLAB in modo da poter distribuire la mia soluzione a un team di tecnici sul campo.

Idealmente il rapporto sarà un documento PDF.

Il generatore di report MATLAB non sembra essere il prodotto giusto in quanto sembra che io debba suddividere il mio script in piccoli pezzi e incorporarli nel modello di report. Il mio script contiene opportunità per l'utente di intervenire e modificare i valori o rifiutare la melodia se i grafici non sembrano giusti e la mia impressione è che questo sarà difficile se il codice viene eseguito dal generatore di report. Inoltre, temo che la struttura del codice e la manutenibilità andranno perse se la struttura del codice è determinata dai requisiti del modello di report.

Si prega di commentare se le mie supposizioni sono errate.

UPDATE

ho ora passati a utilizzare il generatore di Report MATLAB con r2016b rilascio e si sta lavorando molto bene per i miei utenti codice compilato. Sfortunatamente vuol dire che anche i colleghi che hanno una licenza MATLAB devono acquistare il generatore di report, per usare i miei strumenti scriptati.

risposta

4

In qualità di direttore dello sviluppo del Generatore di report MATLAB, sono preoccupato che questa domanda possa lasciare un'impressione errata delle funzionalità del Generatore report.

Per prima cosa, il Generatore di report non richiede di suddividere uno script in piccoli pezzi e di eseguirli all'interno di un modello. Puoi farlo se lo scegli e in alcune circostanze ha senso, ma non è un requisito. Infatti, molte applicazioni di Report Generator utilizzano uno script o un programma MATLAB per interagire con un utente, generare dati nello spazio di lavoro MATLAB e, come passaggio finale, generare un report dai dati dell'area di lavoro.

Inoltre, a partire dalla versione R2014b, il generatore di report MATLAB viene fornito con un'API di generazione documenti, denominata DOM API, che consente di incorporare istruzioni di generazione di documenti in un programma MATLAB. Ad esempio, è possibile creare a livello di programmazione un oggetto documento, aggiungere e formattare testo, paragrafi, tabelle, immagini, elenchi e documenti secondari e generare output Microsoft Word, HTML o PDF, a seconda del tipo di output selezionato. Puoi persino inserire a livello di codice gli spazi vuoti nei moduli che crei, utilizzando Word o un editor HTML.

L'API viene eseguita su piattaforme Windows, Linux e Mac e genera l'output Word e HTML su tutti e tre, senza l'utilizzo di Word. Su Windows, utilizza Word sotto il cofano per produrre l'output PDF dai documenti di Word che genera.

L'ultima versione di MATLAB Report Generator introduce un'API di PowerPoint con funzionalità simili all'API DOM. Se è necessario includere la generazione di report nell'applicazione MATLAB, non escludere il Generatore di report MATLAB in base alle impressioni passate. Potresti essere sorpreso di quanto sia diventato potente.

+0

Ora sono passato al generatore di report e funziona bene. –

1

Avete considerato di guidare Microsoft Word attraverso la sua interfaccia ActiveX? Ho fatto questo in programmi Matlab compilati e funziona bene. Consulta la guida di Matlab per actxserver(): l'oggetto che desideri creare è di tipo Word.Application.

Modifica per aggiungere: Per ottenere i dati nel documento, salvarle come file .emf utilizzando l'argomento -dmeta-print(), poi aggiungerli al documento come questo:

WordServer.Selection.InlineShapes.AddPicture(fileName); 
+0

Grazie per l'esempio. Come scopri tutti i servizi che fornisce la parola? Google non sta aiutando. –

+0

C'è una buona quantità di informazioni sul sito Web Microsoft, ma è difficile da trovare. Prova a cercare "Word Automation" o "VBA Word". Una volta ottenuto un oggetto Word puoi chiamare 'methods()' su di esso in Matlab per vedere cosa espone, ma non è tutto. – Max

+0

L'aiuto disponibile nelle versioni recenti di Word non documenta più questa roba, sfortunatamente.Credo che l'interfaccia descritta nel libro di O'Reilly sia praticamente invariata (all'indirizzo http://shop.oreilly.com/product/9781565927254.do) TRANNE che per Word 2010 il metodo ActiveDocumentSaveAs() è stato sostituito da ActiveDocumentSaveAs2() . Puoi anche provare a registrare una Macro (quale funzione è disponibile, inspiegabilmente, dalla scheda della barra multifunzione!) E guardare il VBA generato. – Max

2

Credo che lei abbia ragione su il generatore di report.

A mio parere, l'approccio più veloce/più semplice sarebbe quello di generare il report in un documento html. Per questo hai solo bisogno delle figure e scrivi un file di testo, la conversione dovrebbe essere banale.

Un approccio abbastanza simile sarebbe quello di creare un file Latex. E poi creare un pdf da esso - anche se per questo avresti bisogno di installare latex sui tuoi computer distribuiti.

Infine, è possibile utilizzare la buona integrazione di Java in Matlab. Ci sono diverse librerie che puoi usare - come this. Ma mi chiedo se ne varrà la pena.

3

Ho fatto un bel po '. Hai ragione che il Generatore di report di MATLAB non è in genere una soluzione eccezionale. @Max suggerisce l'approccio giusto (automatizzando Word tramite la sua interfaccia COM), ma aggiungerei alcuni commenti e suggerimenti in più, in base alle mie esperienze.

  1. Ricordate che se si sta andando con questa soluzione, siete a seconda che gli utenti finali saranno in esecuzione di Windows, e hanno una copia di Office sulla propria macchina.Se si desidera produrre un report in formato PDF, sarà necessario che sia Office 2010 o versione successiva.
  2. Scommetto che sarà più semplice automatizzare la generazione del report in Excel piuttosto che in Word. Dato che stai producendo un report da MATLAB, probabilmente vorrai un sacco di cose nelle tabelle di numeri, che sono più semplici da disporre in Excel.
  3. Se avete intenzione di farlo in Word, il modo più semplice è di prima (senza MATLAB) creare un file .doc/.docx modello, che contiene qualsiasi testo generico che sarà lo stesso per tutti i report e le tabelle vuote per qualche informazione. Attiva le modifiche alla traccia e inserisci commenti vuoti in ogni punto in cui inserisci informazioni. Quindi, all'interno della routine di creazione del report in MATLAB, connettersi a Word e iterare attraverso ogni commento, sostituendolo con qualsiasi dato desiderato.
  4. Se stai imparando ad automatizzare Excel da MATLAB, this page dalla documentazione Interop di Excel è davvero utile. Ce n'è uno equivalente per Word.
  5. A differenza di @Max, non ho mai ottenuto buoni risultati salvando le figure in un file .emf e quindi inserendole. In teoria questo preserva la modificabilità, ma non l'ho mai trovato così prezioso. Invece, ottenere la figura guardando a destra (e la giusta dimensione) in MATLAB, quindi copiarlo negli appunti con print(figHandle, 'dbitmap') e incollare in Excel con Worksheet.Range('A1').PasteSpecial.
  6. Per salvare come PDF, utilizzare Workbook.ExportAsFixedFormat('xlTypePDF', pathToOutputFile).

Spero che questo aiuti!

+0

il comportamento effettivo quando si inserisce una figura da un file .emf varia con la versione di Matlab e/o Word utilizzata. Ho ottenuto risultati migliori un paio di anni fa di quanto non faccia adesso. Tuttavia, funziona ancora, quindi se non è rotto ... – Max

Problemi correlati