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

Schleife beschleunigen - if und mod

 

Julian_S

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.05.2016, 13:16     Titel: Schleife beschleunigen - if und mod
  Antworten mit Zitat      
Hallo zusammen!

Ich habe eine Schleife, in der ich verschiedene Dinge berechne u.a. die unten eingefügte Betriebszeitberechnung. Nach Anwendung des Profilers habe ich nun festgestellt, dass diese eine Berechnung 60% der Zeit benötigt.

Hat jemand eine Idee, wie ich diese Berechnung beschleunige? Konkret geht es darum die Summe eines Vektors zu berechnen und immer dann wenn es sich um einen ganzzahligen Teiler von t_w/dt handelt (entspricht i.d.R. 300) soll das aktuelle k im Vektor t_b aufgeführt werden. Die 2. Bedingung k>=t_DG/dt ist nur drin, damit ich nicht direkt 0/300=0 als "ganzzahligen Teiler" ausgegebenen bekomme.
Code:

 % Berechnung Betriebszeiten
for k=1:n;
    if mod(sum(t_DG), t_w/dt)==0 && k>= t_DG/dt;
        t_b(k)=k;
    else
        t_b(k)=0;
    end
   
 


Ich freu mich über eine Antwort! Danke!
VG Julian


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.05.2016, 18:17     Titel:
  Antworten mit Zitat      
Hallo,

werden t_DG, t_w, dt in der Schleife verändert? Falls ja, welche dieser Variablen?

So sieht es so aus, als ob es unnötig wäre, den Teil
Code:
mod(sum(t_DG), t_w/dt)==0

in jeder Iteration neu zu berechnen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Julian_S

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.05.2016, 12:18     Titel:
  Antworten mit Zitat      
Hallo Harald,
danke für deine Antwort.


Ja, t_DG hängt von k ab, das habe ich wohl versehentlich beim Codekopieren verloren gegangen.
also wie folgt:

Code:

mod(sum(t_DG(k)), t_w/dt)==0
 


VG Julian
 
Harald
Forum-Meister

Forum-Meister


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

t_DG(k) ist dann doch ein Skalar? Wozu also dann summieren?

In k>= t_DG/dt wäre die rechte Seite ein Vektor. Ist das wirklich so beabsichtigt?

Bekommst du mit deinem Code die gewünschten Ergebnisse? Durch minimale numerische Ungenauigkeiten kann es sein, dass Dinge die gleich sind (oder teilbar sein sollten) dies eben doch nicht sind.

Wenn du Beispieldaten für die Variablen geben kannst, wäre das hilfreich zum Testen der Geschwindigkeit.

Grüße,
Harald
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 - 2025 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.