|
|
Anzahl der Vorzeichenwechseln in einem Vektor zählen |
|
Gast |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 17.12.2010, 22:40
Titel: Anzahl der Vorzeichenwechseln in einem Vektor zählen
|
 |
Hallo Forenmitglieder,
ich bin Anfänger in Matlab und müsste für ein Programm die Vorzeichenwechsel in einem Vektor zählen.
Kennt sich damit jemand aus?
Grüße,
Gast
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 17.12.2010, 23:31
Titel:
|
 |
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 18.12.2010, 02:09
Titel: Re: Anzahl der Vorzeichenwechseln in einem Vektor zählen
|
 |
Hallo,
Ist [-1, 0, -1] ein Vorzeichen-Wechsel? Und [1, 0, 1]?
Gruß, Jan
|
|
|
Splasher |

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 23.10.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.10.2012, 09:51
Titel:
|
 |
|
 |
|
Schade dass hierzu nicht mehr geschrieben wurde :-/
Habe genau das gleiche Problem, habe in meinem Matlab-Programm die Abweichung auf die y-Achse, die Strecke auf die x-Achse aufgetragen.
Immer wenn meine Abweichung die 0-Linie durchbricht, würde ich dies gerne Zählen.
Ich kann zwar ohne weite Probleme zählen "wie oft" ich auf der Negativen (bzw. bei der 2.Abweichung positiven Seite) bin, doch brauch ich zusätzlich noch die Anzahl der überschreitungen.
Es kann also sein dass ich 20-x-Werte lang auf der negativen Seite bin - gespeichert wird 20.
Da es sich aber nur um "1" verstoß handelet, hätte ich gerne noch eine möglichkeit dass eine Variable um 1 erhöht wird..
Also sollte die Funktion in etwa folgendes machen:
Wenn der Wert Abweichung kleiner 0 wird => +1
wenn der wert dann wieder positiv wird mach nichts
wenn der wert nachdem er positiv war wieder kleiner 0 wird => +1
Weiß jemand zufällig wie man das realisieren könnte?
Beschreibung: |
|
 Download |
Dateiname: |
kurve.jpg |
Dateigröße: |
35.62 KB |
Heruntergeladen: |
836 mal |
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 23.10.2012, 11:50
Titel:
|
 |
Hallo,
Zitat: |
Schade dass hierzu nicht mehr geschrieben wurde :-/ |
Es müssten sich an sich ähnliche Threads finden lassen.
Zitat: |
Immer wenn meine Abweichung die 0-Linie durchbricht, würde ich dies gerne Zählen. |
Das macht ja mein Vorschlag.
Zitat: |
Ich kann zwar ohne weite Probleme zählen "wie oft" ich auf der Negativen (bzw. bei der 2.Abweichung positiven Seite) bin, doch brauch ich zusätzlich noch die Anzahl der überschreitungen. |
Ich verstehe den Unterschied zwischen "wie oft" und "Anzahl" nicht.
Auch die weiteren Erläuterungen verstehe zumindest ich leider nicht.
Grüße,
Harald
|
|
|
Splasher |

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 23.10.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.10.2012, 13:09
Titel:
|
 |
Wenn ich z.B folgende Wertetabelle hätte:
hätte ich gerne als ergebniss: 2, da ich mich 2x im negativen Bereich aufhalte.
Ich bekomme es aber nur hin, dass das Ergebniss 8 ist, da ich mich "8 Werte lang" im negativen Bereich aufhalte.
Bisschen blöd zu erklären
edit:
mit nnz(diff(sign(x)) ~= 0) bekomme ich als Ergebnis 308, was wohl ein wenig zu hoch sein dürfte :-/
edit2: Ah, okay, dein Code ist genau 2x so groß wie das Ergebnis (zumindest hoffe ich das )
so hab ich es jetzt gelöst, sicher keine schöne und elegante Variante, aber es sollte ja funktionieren, oder?
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 23.10.2012, 14:06
Titel:
|
 |
Hallo
für das obige Beispiel sollte Harald's Algorithmus 3 liefern und nicht 308,
wenn du nur negativen Bereich brauchst dann muss du Harald's Code so anpassen:
|
|
|
Splasher |

Forum-Newbie
|
 |
Beiträge: 3
|
 |
|
 |
Anmeldedatum: 23.10.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.10.2012, 15:21
Titel:
|
 |
Ja, benötige einmal negativ und einmal positive überschreitung der 0-Linie.
Die 154 hatte ich bei der Auswertung der angehängten Kurve, nicht bei dem Beispiel.
Wollte mit dem Beispiel nur zeigen was ich meinte
Danke euch beiden!
|
|
|
Phippu |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.10.2014, 10:05
Titel:
|
 |
Hallo Zusammen
Habe eine Frage zu diesem Thema. Es geht um eine Analyse einer Ganglinie.
Es liegt ein Vektor mit folgender Struktur vor:
x=[0 -1 0 1 -1 -1 0 -1 0 0 0 -1 -1]
Gerne hätte ich nun die Anzahl der Wechsel von -1 zu 1 respektive 1 zu -1.
Also wieviele Vorzeichenwechsel gibt es, wobei -1 0 -1 oder 1 0 1 nicht als Vorzeichenwechsel gilt.
Wäre froh um einen Input, da ich mit den oben erwähnten Tipps bis jetzt nicht weiter gekommen bin.
Danke und Gruss, Phippu
|
|
|
Nras |

Forum-Meister
|
 |
Beiträge: 608
|
 |
|
 |
Anmeldedatum: 21.02.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.12.0.635 (R2011a)
|
 |
|
|
 |
|
Verfasst am: 22.10.2014, 11:31
Titel:
|
 |
Hallo,
dann kannst du einfach die Nullen rauslöschen und den Code von Haralds Antwort benutzen, wobei du auf den Aufruf von sgn() verzichten kannst (du hast sowieso nur +1 oder -1 im Vektor übrig)
Viele Grüße,
Nras
|
|
|
Phippu |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.10.2014, 12:53
Titel:
|
 |
Hei Nras
Vielen Dank für deine Antwort, auch wenn meine Frage hinterher betrachtet doch recht unnötig war
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|