Domanda

È generalmente molto facile chiamare mex File (scritti in C/C ++) in MATLAB per accelerare determinati calcoli. Nella mia esperienza, tuttavia, il vero collo di bottiglia in MATLAB è la trama dei dati. La creazione di maniglie è estremamente costosa e anche se si aggiornano solo i dati sulla maniglia (ad es. XData, Ydata, Zdata), questo potrebbe richiedere anni. Ancora peggio, poiché Matlab è un programma a filo singolo, è impossibile aggiornare più grafici contemporaneamente.

Quindi la mia domanda: È possibile scrivere una GUI MATLAB e chiamare C ++ (o qualche altro codice parallelizzabile) che si prenderà cura della trama / visualizzazione? Sto cercando una soluzione multipiattaforma che funzionerà su Windows, Mac e Linux, ma qualsiasi soluzione che mi fa iniziare su entrambi i sistemi operativi è molto apprezzata!

Ho trovato un Libreria C ++ sembra usare Matlab plot() sintassi ma non sono sicuro se questo accelerebbe le cose, dal momento che temo che se tramassi in Matlab figure() finestra, le cose potrebbero essere rallentate di nuovo.

Apprezzerei qualsiasi commento e feedback da parte di persone che hanno già affrontato questo tipo di situazione!

MODIFICARE: Ovviamente, ho già profilato il mio codice e il collo di bottiglia è la trama (dozzine di pannelli con molti dati).

EDIT2: Per farti ottenere la generosità, ho bisogno di una vita reale, un esempio di lavoro minimo su come farlo - risposte suggestive non mi aiuteranno.

EDIT3: Per quanto riguarda i dati da tracciare: in un caso più semplicistico, pensa a 20 grafici di linea, che deve essere aggiornato ogni secondo con qualcosa come 1000000 punti dati.

EDIT4: So che questo è un'enorme quantità di punti da trama, ma non ho mai detto che il problema è stato facile. Non posso semplicemente tralasciare alcuni punti dati, perché non c'è modo di valutare quali punti sono importanti, prima di tracciarli effettivamente (i dati vengono campionati una risoluzione temporale Sub-MS). È un dato di fatto, i miei dati vengono acquisiti utilizzando un sistema di acquisizione di dati commerciali che viene fornito con un visualizzatore di dati (scritto in C ++). Questo programma non ha problemi a visualizzare fino a 60 grafici di linea con anche più di 1000000 punti dati.

EDIT5: Non mi piace dove stia andando la discussione in corso. Sono consapevole che il sottocampionamento dei miei dati potrebbe accelerare le cose, tuttavia, questa non è la domanda. La domanda qui è come ottenere l'interfaccia AC / C ++ / Python / Java per lavorare con MATLAB per sperare di accelerare la trama parlando direttamente con l'hardware (o usando qualsiasi altro trucco / modo)

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top