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

Maxima und Minima

 

Sunrain
Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 08.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.02.2015, 10:27     Titel: Maxima und Minima
  Antworten mit Zitat      
Hallo ich habe folgende Messkurve wie in Bild 2 zu Erkennen. Für´s erste soll ich Maxima und Minima in dem Bereich aus Bild 1 bestimmen, später aber auch in einem frei gewählten Bereich.
Angfangen habe ich wie folgt
Code:
[maxy,idx]=max(f); x(idx)


Allerdings klappt das nicht und Matlab sagt mir einen Wert von 1,... obwohl meine Kurve unterhalb von 1 liegt.

Hoffe auf eure Hilfe
LG
Sunrain

2.jpg
 Beschreibung:

Download
 Dateiname:  2.jpg
 Dateigröße:  56.06 KB
 Heruntergeladen:  280 mal
1.jpg
 Beschreibung:

Download
 Dateiname:  1.jpg
 Dateigröße:  51.28 KB
 Heruntergeladen:  259 mal
Private Nachricht senden Benutzer-Profile anzeigen


Sunrain
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 08.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.02.2015, 10:33     Titel:
  Antworten mit Zitat      
der gesuchte Bereich in Bild 1 liegt zwischen 0 und 24000 beim speichern der Bilder ist leider ein Fehler unterlaufen
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 06.02.2015, 11:47     Titel:
  Antworten mit Zitat      
ohne daten ist auch dieser fehler schwer zu reproduzieren.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Sunrain
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 08.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.02.2015, 13:02     Titel:
  Antworten mit Zitat      
Die dazugehörige Excel-Datei ist zu groß und lässt sich nicht hochladen
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 06.02.2015, 13:11     Titel:
  Antworten mit Zitat      
interessant scheint ja nur der anfang zu sein und eine gepackte mat datai mit den daten sollte sich doch auf 50 mb bringen lassen.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Sunrain
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 08.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.02.2015, 13:48     Titel:
  Antworten mit Zitat      
lese ja genau die Excel-Datei in Matlab ein, worin besteht denn da dann der unterschíed in der Größe
Private Nachricht senden Benutzer-Profile anzeigen
 
Sigggi
Forum-Anfänger

Forum-Anfänger


Beiträge: 46
Anmeldedatum: 27.01.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.02.2015, 14:09     Titel:
  Antworten mit Zitat      
Hallo,

sind das Matlab - oder Excel-Grafiken?

Hast Du sichergestellt, dass die Datei korrekt ausgelesen wird?

Gruß, Siggi.
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Sunrain
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 08.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.02.2015, 14:22     Titel:
  Antworten mit Zitat      
Die graphen sind aus Matlab und ja hab kontrolliert das die Werte aus Excel korrekt in Matlab eingelesen wurden
Private Nachricht senden Benutzer-Profile anzeigen
 
Sigggi
Forum-Anfänger

Forum-Anfänger


Beiträge: 46
Anmeldedatum: 27.01.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.02.2015, 17:46     Titel:
  Antworten mit Zitat      
Hallo,

ohne ein Minimalbeispiel kann Dir wahrscheinlich keiner helfen

Code:

plot(x, f)
[maxy, idx] = max(f); x(idx)
 


Wenn Du Dir sicher bist, dass die Daten richtig exportiert werden, kannst Du Deine Variablen in eine Datei speichern:

Code:

save('MeineVariablen.mat','x','f','-v7')
 


und die Datei hochladen.

Gruß, Siggi.
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Sunrain
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 08.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.02.2015, 09:09     Titel:
  Antworten mit Zitat      
die Funktionen [maxy, idx] habe ich bereits ausprobiert, hier zeigt er mir definitiv ein falsches Ergebnis an.
Habe jetzt eine Excel-Datei angeheftet in dem 1 Messung drin ist, wo ich das erste Maximum und das erste Minimum berechnen soll. Eventuell auch so das ich später auch das Maxima eines bestimmten Punktes berechnen kann.

Danke für dir Hilfe

Mappe1.xls
 Beschreibung:

Download
 Dateiname:  Mappe1.xls
 Dateigröße:  162.5 KB
 Heruntergeladen:  322 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Sigggi
Forum-Anfänger

Forum-Anfänger


Beiträge: 46
Anmeldedatum: 27.01.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.02.2015, 09:56     Titel:
  Antworten mit Zitat      
Aha,

Du suchst LOKALE Maxima. max() liefert Dir nur den Maximalwert einer Reihe.

Code:

anstieg = diff(messwerte);
 


liefert Dir die Differenzen aller aufeinanderfolgenden Werte. Ein lokales Maximum ist dadurch charakterisiert, das die Werte rechts und links daneben kleiner sind. Du musst also die Stellen finden, in denen einem positiven Wert für den Anstieg ein negativer folgt. Hier sind ">", "<" und "find" Deine Freunde:

Code:

% Anstieg groesser und kleiner 0:
allegroesser0 = anstieg > 0;
allekleiner0 = anstieg < 0;

% lokale Maxima:
index = find(allegroesser0(1:end-1).*allekleiner0(2:end)) + 1; % +1, weil diff() einen Wert weniger ausgibt, als Du eingibst
plot(zeit(index), messwerte(index),'x')
 


Mit den lokalen Minima funktioniert's analog. Hilft Dir das weiter?

Gruß, Siggi.
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Sunrain
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 08.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.02.2015, 10:17     Titel:
  Antworten mit Zitat      
Also ich bin bis jetzt folgernder maßen vorgegangen, hab die daten eingelesen und alles beschriftet.

Code:

clear all; clc
[a]=xlsread('Rohdaten_bidest.xlsx','A2402:A5002'); [f]=xlsread('Rohdaten_bidest.xlsx','B2402:B5002');
plot(a,f);
legend('BI-02.02-B1')
xlabel('Zeit[ps]'); ylabel('nor. Spannungssprung'); title('Luftmessung bei bidest-Wasser')
xlim([24000 50000])
set(gca,'xticklabel',str2mat('24000','25000','30000','35000','40000','45000','50000'))
 


und ich weiß ehrlich nicht wie ich dein Tipp da einarbeiten soll, bin eher anfänger was das angeht.

Weißt du vielleicht auch wie ich die 24000 auf der x-Achse an den 0 Punkt der y-Achse setze?

Danke

[EDITED, Jan, Bitte kümmere Dich um eine ordentliche Formatierung des Codes - Danke]
Private Nachricht senden Benutzer-Profile anzeigen
 
Sigggi
Forum-Anfänger

Forum-Anfänger


Beiträge: 46
Anmeldedatum: 27.01.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.02.2015, 11:12     Titel:
  Antworten mit Zitat      
Hallo,

einfach substituieren:

Code:

clear all; clc
[a]=xlsread('Rohdaten_bidest.xlsx','A2402:A5002'); [f]=xlsread('Rohdaten_bidest.xlsx','B2402:B5002');
plot(a,f);

% der Anstieg Deiner Messwertkurve
anstieg = diff(f);

% alle Indizes > 0 und < 0
allegroesser0 = f > 0;
allekleiner0 = f < 0;

% alle lokalen Maxima
index = allegroesser0(1:end-1).*allekleiner0(2:end-1);
index = find(index) + 1;

% in die Grafik plotten
hold on
plot(a(index), f(index), 'x', 'color', 'red')

legend('BI-02.02-B1')
xlabel('Zeit[ps]'); ylabel('nor. Spannungssprung'); title('Luftmessung bei bidest-Wasser')
xlim([24000 50000])
set(gca,'xticklabel',str2mat('24000','25000','30000','35000','40000','45000','50000'))]
 


Den Koordinatenursprung zu verändern ist von Matlab nicht vorgesehen, leider. Die einfachste Lösung ist eine schwarze Linie zu plotten:

Code:

hold on
plot([24000 24000], get(gca, 'YLim'), 'k')
 


Dann hast Du allerdings noch keine Ticks.

Elegant ist diese Lösung: http://www.mathworks.com/matlabcent.....s-lines-through-an-origin
Das *zip-Archiv herunterladen, entpacken, in den Ordner customplots wechseln. "help oaxes" gibt Dir ein paar Beispiele.

Hilft Dir das weiter?
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Sunrain
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 08.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.02.2015, 11:36     Titel:
  Antworten mit Zitat      
Gebe ich deins, was sehr logisch klingt ein, gibt Matlab mir folgende Error Meldung

Error using .*
Matrix dimensions must agree.

Error in Hilfe (line 7)
index = allegroesser0(1:end-1).*allekleiner0(2:end-1);
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: 09.02.2015, 11:40     Titel:
  Antworten mit Zitat      
Hallo Sunrain,

Zitat:
Error using .*
Matrix dimensions must agree.

Die Meldung ist eindeutig, oder?

Offensichtlich haben "allegroesser0(1:end-1)" und "allekleiner0(2:end-1)" unterschiedlich viele Elemente. Wenn Du das brutale "clear all" weglässt, könntest Du den Debugger verwenden, um der Ursache auf den Grund zu gehen. Wie man mit dem Debugger umgeht, solltest Du unbedingt aus der Dokumentation lernen.

Viele Grüße, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.