WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

num2str - zu langsam

 

humpel
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 07.09.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.08.2020, 13:31     Titel: num2str - zu langsam
  Antworten mit Zitat      
Hallo,

in meinem Code befindet sich eine Zeile, welche sehr sehr oft aufrufen wird:

x=[{'000'} {num2str(a)} {num2str(b,'%04.f')}];

Leider sorgt diese für >50% der Simulationsdauer und bremst somit die Simulation aus. Gibt es eine Möglichkeit diese zu Beschleunigen? Gibt es eine elegantere Art aus Zahlen einen String zu generieren?

Mir ist durchaus bewusst, dass die Aussichten recht trübe sind, hoffe aber auf einen wertvollen Input.

Gruß,
humpel
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.08.2020, 10:12     Titel:
  Antworten mit Zitat      
Hallo,

du könntest versuchen, ob sprintf schneller ist.
Sind diese vielen Aufrufe in einer for-Schleife? Dann würde ich versuchen zu vektorisieren.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
humpel
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 07.09.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.08.2020, 15:47     Titel:
  Antworten mit Zitat      
Die Zeile Code ist mit sprintf einfach mal um Faktor 2 bis 5 schneller Shocked
Danke, Harald!!!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 14.08.2020, 16:13     Titel:
  Antworten mit Zitat      
Hallo,

ist schon mal was. Mit Vektorisierung kann man häufig einen Faktor 10 oder mehr raus holen. Vielleicht sogar zusätzlich zu dem Gewinn durch sprintf .

Wenn du allerdings durch die Verwendung von sprintf den Algorithmus insgesamt (so verstehe ich das) so stark beschleunigen konntest, dann ist die Frage, ob sprintf überhaupt noch der Bottleneck ist.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 15.08.2020, 15:12     Titel: Re: num2str - zu langsam
  Antworten mit Zitat      
Hallo humpel,

Dein code erzeugt 3 skalare {1x1} CELL-Arrays und verbindet sie dann zu einem {1 x 3} CELL Array.
Erzeuge das {1x3} CELL Array lieber direkt. Mit dem bereits erwähnten sprintf ird es noch schneller:

Code:
x = {'000', sprintf('%d', a), sprintf('%04.f', b)};

Gruß Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.