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 in Funktion mitzählen

 

Matlab_Beginner56446

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2015, 16:48     Titel: Schleife in Funktion mitzählen
  Antworten mit Zitat      
Also ich habe folgendes Problem ich berechne die Differenz zwischen zwei Werten und nehme dann den maximalen Wert. Dafür verwende ich, wie in meinem Code zu sehen ist, auch eine Schleife.

Code:
max_diff_values(1,(x-1))=max(abs(last_values((1:2:end),2)-last_values((1:2:end),x+2)));


Mein Problem ist nun ich benötige die Zeile in der dieser maximale Wert gefunden wurde, möchte die Schleife aber nicht nochmal in einer anderen Zeile durchführen. Und ein weiteres Array nur für einen Zwischenschritt macht das ganze Programm relativ groß da ich die Berechnung noch das ein oder andere mal für andere Werte durchführe.

Kann ich nun die Schleife mitzählen lassen.
Also sowas wie i=1:2:end (geht nicht aber nur um das Prinzip zu erklären).
Vielleicht kennt ihr da ja was geschicktes.

Danke und Gruß


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 17.06.2015, 17:06     Titel:
  Antworten mit Zitat      
um in irgendeiner schleife irgendwas zu zählen geht
Code:
for i=1:10
k=k+1
end
so in der richtung.
max hat aber noch weitere rückgabe parameter. die könnten eventuell hilfreich sein. ich verstehe dein problem noch nicht genau um da sicher zu sein. dein beispiel code ist sehr kurz und enthällt weder die von dir erwähnte schleife noch wird klar was du noch haben willst und was nicht klappt. und lauffähig ist es natürlich auch nicht.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2015, 17:42     Titel:
  Antworten mit Zitat      
Ok werden mir die max Funktion dann mal noch anschauen.
Also die eigentliche Funktion ist:
Code:

while x<num_sens
max_diff_values(1,(x-1))=max(abs(last_values((1:2:end),2)-last_values((1:2:end),x+2)));
x=x+1;
end


Also x verwende ich für die einzelnen Spalten
in last_values stehen die Messwerte ich nehme dann die Differenz zwischen jedem 2. Wert für die beiden Spalten.

Also ich denke dann muss ich die Funktion etwas "auseinanderbauen" um dann eine richtige for-Schleife zu machen um den korrekten Wert zu bekommen.

Wie kann ich denn dann eine for schleife schreiben die bis zum letzten Wert des Arrays läuft. Darum habe ich das so gemacht.
Also 1:2:end ist ja perfekt für meinen Fall, jedoch geht das bei einer for Schleife also

Code:


Funktioniert ja nicht.
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.06.2015, 20:53     Titel:
  Antworten mit Zitat      
Mal über die Verwendung von size() oder numel() nachgedacht?
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.06.2015, 13:19     Titel:
  Antworten mit Zitat      
Vielen Dank für den Tipp da hab ich gar nicht dran gedacht. Smile

Code funktioniert jetzt indem ich eine Schleife gemacht hab:

Code:

for 1:2:i_max=size(last_values,1)
     max_diff_values(1,(x-1))=max(abs(last_values((i_max),2)-last_values((i_max),x+2)));
end
 
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.06.2015, 14:03     Titel:
  Antworten mit Zitat      
habe doch einen besseren Trick gefunden weil das maximum mit dem vorherigen Code ja dauernd überschrieben wird.

Man kann den Index mithilfe des max speichern und dann später auslesen um die Zeile zu nutzen in der das Maximum gefunden wurde.

Code:

[max_diff_values(1,(x-1)), I_max(1,(x))]=max(abs(last_values((1:2:end),2)-last_values((1:2:end),x+2)));
 


Damit kann ich das Array I_max auslesen für die einzelnen Spalten.
Vielen Dank Winkow.
 
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.