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

Ein Schwellenwert einprogrammieren (threshold)

 

star

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.11.2012, 16:55     Titel: Ein Schwellenwert einprogrammieren (threshold)
  Antworten mit Zitat      
hallo zusammen,

ich habe ein problem und würde euch gerne um rat fragen.
ich bin matlab neuling und ich habe die aufgabe einen code zu schreiben (wenns geht mit einer schleife). Ich habe einen Signalverlauf und muss da einen threshold programmieren der mit alle werte über dieser schwelle markiert und wiedergibt (also wiedergabe der spitzenwerte).
ich denke das es nicht so eine komplizierte sache ist aber ich bräuchte trotzdem hilfe von euch um da den einstieg zu finden.
ich hoffe mein problem ist klar und ihr könnt mir weiterhelfen

gruß

klaus


dmjr
Forum-Century

Forum-Century


Beiträge: 199
Anmeldedatum: 02.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.11.2012, 17:23     Titel:
  Antworten mit Zitat      
Code:

Liefert dir alle Indizes der Werte aus A die größer als 10 sind. Dafür braucht es eigentlich keine schleife.
Private Nachricht senden Benutzer-Profile anzeigen
 
star

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.11.2012, 17:26     Titel:
  Antworten mit Zitat      
hallo und danke für die schnelle antwort,

hm das hört sich ja sehr trivial an =)
und wenn ich in abhängigkeit von "A" ein schwellenwert plotten will, sozusagen das es einfacher zu erkennen ist das da die schwelle gewählt wurde. gibt es dafür eine einfache schreibweise ? =)

gruß
 
star

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2012, 16:44     Titel:
  Antworten mit Zitat      
hallo nochmal,

ich wollte nochmal nachfragen wie ich das doch in einer schleife lösen kann ?
da ich es nämlich so lösen soll.

danke für die antwort

gruß
 
dmjr
Forum-Century

Forum-Century


Beiträge: 199
Anmeldedatum: 02.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.11.2012, 20:06     Titel:
  Antworten mit Zitat      
Mir ist nicht ganz klar was du suchst?

Einen Plot in dem nur die Werte über dem Schwellwert abgebildet sind?
Private Nachricht senden Benutzer-Profile anzeigen
 
star

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.11.2012, 09:54     Titel:
  Antworten mit Zitat      
hallo,

nein. alle werte im signal die über der schwelle sind, z.b A > 10 , wie du shcon geschrieben hast, sollen am höchsten punkt markiert werden.
ich sende noch ein bild dazu um aufzuzeigen wie der plot aussehen sollte.

alle roten kreise sind über der Verlangten schwelle.
zum beispiel soll bei dem wert 12 in der y achse ein strich durchgezogen werden, damit man sieht wo der Schwellenwert ist. alle maxima über diesem wert sollen dann "wie im bild unten" rot markiert werden.

ich hoffe es ist nun ein wenig klarer.

danke für die mühen im voraus
gruß

Peak.fig
 Beschreibung:

Download
 Dateiname:  Peak.fig
 Dateigröße:  84.8 KB
 Heruntergeladen:  585 mal
Peak.fig
 Beschreibung:

Download
 Dateiname:  Peak.fig
 Dateigröße:  84.8 KB
 Heruntergeladen:  525 mal
 
star

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.11.2012, 16:24     Titel:
  Antworten mit Zitat      
hallo nochmal,
da ich imemernoch Evil or Very Mad an dem problem hänge nochmal eine hoffentlich bessere erklärung.

Siehe Bild:
jedesmal wenn threshold über 0,5 ist soll das signal ein peak bekommen. Also ein Spitzenwert.
Das problem ist das ich das in einer schleife machen muss Sad .
ich das aber nciht hinbekomme. Die schleife läuft sicherlich jedes maxima ab und schaut wo der höchste punkt ist und dann wenn er über 0,5 ist ist es ein peak. aber wie kann ich das in form eines codes darstellen.

Ich habe im netz auch ein Peak detection algoryhtmus gefunden aber das ist nicht genau das was ich suche.
hier der code

Code:
maxtab = [];
mintab = [];

v = v(:); % Just in case this wasn't a proper vector

if nargin < 3
  x = (1:length(v))';
else
  x = x(:);
  if length(v)~= length(x)
    error('Input vectors v and x must have same length');
  end
end
 

if nargin < 3
  x = (1:length(v))';
else
  x = x(:);
  if length(v)~= length(x)
    error('Input vectors v and x must have same length');
  end
end


if (length(delta(:)))>1
  error('Input argument DELTA must be a scalar');
end

if delta <= 0
  error('Input argument DELTA must be positive');
end

mx = -Inf;

lookformax = 1;

for i=1:length(v)
  this = v(i);
  if this > mx, mx = this; mxpos = x(i); end
 
  if lookformax
    if this < mx-delta
      maxtab = [maxtab ; mxpos mx];
      lookformax = 0;
    end  
  else
      mx = this; mxpos = x(i);
      lookformax = 1;
end
end
end


ich hoffe es ist verständlich geworden was ich brauche denn es ist ein dringendes problem

danke für die mühen

Signal.fig
 Beschreibung:

Download
 Dateiname:  Signal.fig
 Dateigröße:  157.28 KB
 Heruntergeladen:  438 mal
 
dmjr
Forum-Century

Forum-Century


Beiträge: 199
Anmeldedatum: 02.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.11.2012, 19:14     Titel:
  Antworten mit Zitat      
Also suchst du Code um alle lokalen Maxima bestimmt, die größer als ein gewisser Schwellwert sind?

Warum musst du das mit einer Schleife machen? Deinen Code verstehe ich ehrlich gesagt nicht.

Code:
[maxval,maxid]=extrema(x)
maxima_filtered_by_threshold=maxid(maxval>0.5)

Gibt alle extrema die größer als 0.5 sind an (indizes im Vektor)

http://www.mathworks.com/matlabcent.....content/extrema/extrema.m
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 29.11.2012, 12:06     Titel:
  Antworten mit Zitat      
dmjr hat Folgendes geschrieben:

Warum musst du das mit einer Schleife machen? Deinen Code verstehe ich ehrlich gesagt nicht.

Weil das wohl eine Hausaufgabe ist.

@star
Hallo,
das ist schon richtig du muss die Peak Werte sammeln und dann diese einfach drüber plotten.
HOLD ON dabei nicht vergessen

Code:

x       = -pi:0.01:pi;
v       = sin(x);
plot(x,v)
maxima  = 0.8;
max_pos = false(size(v));  
for k=1:length(v)
   max_pos(k) =  v(k) > maxima;
end
hold on;

plot(x(max_pos),v(max_pos),'r')

hold off;
 
Private Nachricht senden Benutzer-Profile anzeigen
 
star

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.11.2012, 12:52     Titel:
  Antworten mit Zitat      
hallo,

erst mal danke das ihr euch so darum bemüht habt. ich habe gerade ein nebenprojekt laufen, sobald ich die zeit dazu habe werde ich die codes testen und dann bescheid geben.

bis bald
 
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.