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

Anti-mode-Funktion?

 

Sindy

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.08.2010, 20:05     Titel: Anti-mode-Funktion?
  Antworten mit Zitat      
Guten Tag Very Happy ,

ich habe mal wieder ne Frage Laughing

Gibt es eine Gegenfunktion zu
Code:
? Also eine Funktion welche mir den Wert liefert der am seltensten in einer Matrix vorkommt ?

Hoffe einer hat eine Idee Embarassed


aj.geissler
Forum-Guru

Forum-Guru



Beiträge: 251
Anmeldedatum: 26.11.07
Wohnort: Seeheim-Jugenheim
Version: ---
     Beitrag Verfasst am: 29.08.2010, 11:53     Titel:
  Antworten mit Zitat      
Hi,

probier doch mal folgendes:

-mode(-x)

Grüße
Andreas
_________________

Andreas Geißler
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

schau mal in die Implementierung von mode.
Code:


Es reicht vermutlich aus, die Zeile
Code:
[maxfreq,firstloc] = max(freq);  


durch
Code:
[minfreq,firstloc] = min(freq);  

zu ersetzen (und dann entsprechend weiter zu verfahren), und das ganze unter einem neuen Namen (!!) zu speichern.

Grüße,
Harald
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: 01.09.2010, 13:53     Titel: Re: Anti-mode-Funktion?
  Antworten mit Zitat      
Hallo Sindy,

Zitat:
Gibt es eine Gegenfunktion zu
Code:
? Also eine Funktion welche mir den Wert liefert der am seltensten in einer Matrix vorkommt ?

Üblicherweise kommt in den meisten Matrizen 19 sehr selten. Um genau zu sein: In "fast allen" Matrizen kommt 19 gar nicht vor.

Vermutlich meinst Du aber etwas anderes. Zunächst kannst du HISTC zählen lassen, wie oft die einzelnen Zahlen vorkommen. Per SORT kannst Du dann die seltenen Elemente finden:
Code:
[N, Bin] = histc(x(:), unique(x(:));
[dummy, Index] = sort(N);
Seldom = Bin(Index(1));
 


Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Sindy

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.09.2010, 19:14     Titel:
  Antworten mit Zitat      
erstmal viellen Dank für die ganzen Antworten Very Happy

ok die Variante von Harald funktioniert.

jetzt wäre es noch schön, wenn mir der Algorithmuss einen Vektor erschaffen würde, in welchem Alle Werte stehen die "gleich selten" sind.

also mal als kleines bsp.:

Code:



A=[1,2,3,3,4,4,5,5,5];
B=antimode(A)   %Antimode ist hierbei die veränderte Version der Funktion mode


 


B = [1; 2] wäre dann das ergebniss das ich gerne hätte.
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 21.09.2010, 21:12     Titel:
  Antworten mit Zitat      
Hallo Sindy,

was hast Du denn bisher probiert?
Es ist immer viel schwieriger ein ganzes Programm zu schreiben, als Fehler in einem existierenden Programm zu verbessern.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 21.09.2010, 21:20     Titel:
  Antworten mit Zitat      
Hallo,

das kannst du dir doch selber basteln. In die Funktion müsste noch etwas in der Art:
Code:
result = x(freq == minfreq);


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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.09.2010, 16:09     Titel:
  Antworten mit Zitat      
Danke nochmal für die Hinweise.

Leider steh ich in Sachen programieren mit MATLAB noch nicht so sehr auf beiden Beinen, das ich sinnvoll raus finde wo ich das einbauen muss.

Embarassed
 
Harald
Forum-Meister

Forum-Meister


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

Ausgehend von der originalen mode-Funktion:

- Zeile 1 umändern in: function result = antimode(x,dim)

- Die von dir bereits umgesetzte Änderung max -> min

- Unmittelbar darunter (macht an sich nichts, wo genau):
Code:
result = x(freq == minfreq);


Die Funktion sollte für Vektoren ihren Zweck erfüllen. Bei Matrizen dürfte es Probleme geben. Da ist ja allein schon die Frage, wie das umgesetzt werden sollte.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.09.2010, 20:08     Titel:
  Antworten mit Zitat      
ok danke, habe gerade gesehen wie es auch geht:

Code:


[A,B,C]=antimode(D);


 


Hierbei werden die Elemente mit der gleichen Häufigkeit in C als 1Zellen Array gespeichert. Wenn ich aus diesem die Werte heraus bekomme, geht es auch.

vielen Dank noch mal für die Antworten Very Happy
 
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 - 2024 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.