Est-il possible d'accélérer le traçage MATLAB en appelant du code C / C ++ dans MATLAB?

StackOverflow https://stackoverflow.com/questions/8946474

Question

Il est généralement très facile d'appeler mex Fichiers (écrits en C / C ++) dans MATLAB pour accélérer certains calculs. D'après mon expérience cependant, le véritable goulot d'étranglement de Matlab est le traçage de données. La création de poignées est extrêmement coûteuse et même si vous mettez à jour uniquement les données de manche (par exemple, XDATA, YDATA, ZDATA), cela pourrait prendre des âges. Pire encore, puisque MATLAB est un programme fileté unique, il est impossible de mettre à jour plusieurs tracés en même temps.

Par conséquent ma question: Est-il possible d'écrire une interface graphique MATLAB et d'appeler C ++ (ou un autre code parallélisable) qui prendrait en charge le tracé / visualisation? Je recherche une solution multiplateforme qui fonctionnera sur Windows, Mac et Linux, mais toute solution qui me fait démarrer sur l'un ou l'autre système d'exploitation est grandement appréciée!

j'ai trouvé un Bibliothèque C ++ Cela semble utiliser Matlab's plot() Syntaxe mais je ne sais pas si cela accélérerait les choses, car j'ai peur que si je complote dans Matlab figure() fenêtre, les choses pourraient à nouveau ralentir.

J'apprécierais tout commentaire et commentaires de personnes qui ont déjà traité ce genre de situation!

ÉDITER: De toute évidence, j'ai déjà profilé mon code et le goulot d'étranglement est le tracé (douzaine de panneaux avec beaucoup de données).

Edit2: Pour que vous obteniez la prime, j'ai besoin d'un exemple de travail réel, minimal sur la façon de procéder - des réponses suggestives ne m'aideront pas.

Edit3: En ce qui concerne les données à tracer: dans un cas des plus simplistes, pensez à 20 parcelles de ligne, qui doivent être mises à jour chaque seconde avec quelque chose comme 1000000 points de données.

Edit4: Je sais que c'est une énorme quantité de points à tracer, mais je n'ai jamais dit que le problème était facile. Je ne peux pas simplement laisser de côté certains points de données, car il n'y a aucun moyen d'évaluer quels points sont importants, avant de les tracer réellement (les données sont échantillonnées une résolution temporelle de sous-MS). En fait, mes données sont acquises à l'aide d'un système d'acquisition de données commerciales qui est livrée avec une visionneuse de données (écrite en C ++). Ce programme n'a aucun problème à visualiser jusqu'à 60 parcelles de ligne avec encore plus de 1000000 points de données.

Edit5: Je n'aime pas où se déroule la discussion actuelle. Je suis conscient que le sous-échantillonnage de mes données pourrait accélérer les choses - cependant, ce n'est pas la question. La question ici est de savoir comment obtenir l'interface AC / C ++ / Python / Java pour travailler avec MATLAB afin d'espérer accélérer le traçage en parlant directement au matériel (ou en utilisant n'importe quelle autre astuce / voie)

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top