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

Erweiterte Sortieren von Namen aus einem Struct

 

Perfektionist

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.08.2011, 20:42     Titel: Erweiterte Sortieren von Namen aus einem Struct
  Antworten mit Zitat      
Hallo,

ich benötige mal eure Hilfe. Ich habe verschiedene Dateien mit
unterschiedlichen vielen Signalen. Diese lese ich in einer
Datenstruktur ein. Über ein den Befehl sort sortiere ich letztendlich die Namen alphabetisch.
Code:

[Namen_sortiert, Index] = sort({Datenstruktur.Signalname}) ;
Datenstruktur = Datenstruktur(Index);
 


Für eine Auswertung habe eine Gui geschrieben. Da ich 8 Siganle benötige,
gebe ich die Liste "Namen_sortiert" an die 8 Popupmenues weiter. Um deren
jeweilige Value greife ich auf den Struct zu.

Um die Auswertung etwas schneller durchführen zu können, möchte ich in den
Popupmenue den angezeigten Namen vorselektieren. Es soll zum Beispiel
in einem Popupmenue das erste Signal, welches mit der Buchstaben Ent_
und in der anderen mit Kft_, angezeigt werden.

Meine Frage wäre, wie schaffe ich es, dass original alphabetisch sortierte
Liste zwar im String des Popupmenues vorhandenen ist, aber so optimiert
dargestellt wird (also nach oben scrollen die Anfangsbuchstaben von C
nach A und beim Runterscrollen von E nach Z geht).

Ich habe bis jetzt keine Idee, wie ich das noch umsetzen kann. Also für jeden Kommentar bin ich dankbar.


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 25.08.2011, 17:35     Titel:
  Antworten mit Zitat      
Hallo,

ich verstehe die Problematik nicht ganz. Also du hast die Liste mit Filename über SORT sortiert, jetzt willst du die Filenamen auf 8 Popup aufteilen? Das Aufteilen soll anhand der Anfangsbuchstaben funktionieren? Verstehe ich das richtig?

Wenn ja, dann STRNCMP/STRNCMPI konnte z.B helfen

Code:

pos_pop1 = strncmpi(Namen_sortiert,'Ent_');
set(handles.popup1,'String',Namen_sortiert(pos_pop1 ))
... usw..
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Perfektionist

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.08.2011, 20:43     Titel:
  Antworten mit Zitat      
Hi,

denny mit deiner Lösung wird in dem Popupmenue nur genau die Strings angezeigt, welcher mit 'Ent' beginnen. Da ich aber beim plotten der Siganle und der Berechnung mich auf dem Value aus dem gewählten Popup beziehe, werden falsche Signale ausgewählt. Dies könnte ich umgehen, wenn ich einfach zum Value den pos_pop wert dazu addiere.

Problematisch ist wenn sich der Name des gesuchten Signals verändert oder in einer anderen Quellbotschaft verschoben oder garnicht existiert. Beim letzteren der Varianten existieren meist weniger starkt abgestastete Kanäle, die an dessen Stelle verwendet werden könnten. Dadurch muss die original Liste unbedingt im String des Popupmenues erhalten bleiben. Es soll nur schon halt durch das Programm im String des Popupmenue vorgescrollt werden.

Vielen dank trotzdem an denny, habe durch dich wieder ein neuen Befehl kennen gelernt.

Noch eine weitere Frage: sort sortiert ja aphabetisch aber erst von A-Z (Großbuchstaben) und danach von a-z (Kleinbuchstaben). Deshalb sieht die Liste z.B. wie folgt aus:
Code:

Namen_sortiert = {'Abseits','Anfang','Beta','Zelt','aufräumen','bellen','zelten'}
 


Kann man die original Liste auch so sortieren nach Anfangbuchstabe A, a,B,b etc folgt. Finde ich in dem Fall besser, wenn jemand das Signal vorher in eine andere Botschaft versetzt oder umbenannt hat (z.B. statt groß kleingeschrieben hat).

MfG
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 25.08.2011, 21:07     Titel: Re: Erweiterte Sortieren von Namen aus einem Struct
  Antworten mit Zitat      
Hallo Perfektionist,

Ich verstehe das Problem ebenfalls nicht.
Hast Du so eine Art von Popup-Menü schonmal irgendwo gesehen? Wenn nicht, ist eine Implementierung wahrscheinlich verwirrend für die User.

Kannst Du vielleicht ein Bild davon zeichnen und hier posten?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 26.08.2011, 09:59     Titel:
  Antworten mit Zitat      
Hallo

Okay, du sollst mal wirklich deutlicher beschreiben, was du willst.
Vorscrollen könnte man denke ich realisieren, aber dafür braucht man extra Eingabefeld.
Nehmen wir an dass alle Namen stehen in einem Popup.
Dann gibst im Eingabefeld "Ent_" ein, in Callback von Editfelds
so was in der Art einbauen:
Code:

tok  = get(handles.edit1,'String');
Namen_sortiert = get(handles.popup1,'String')
value = find(strncmpi(Namen_sortiert,tok,length(tok)),1,'first');
if ~isempty(value)
  set(handles.popup1,'Value',value)
end

 



Zur Sortier-Frage kombiniere LOWER und SORT zusammen.

Code:

Namen_sortiert = {'Abseits','Anfang','Beta','Zelt','aufräumen','bellen','zelten'}
[dummy,idx]=sort(lower(Namen_sortiert ))
Namen_sortiert= Namen_sortiert(idx)
 
Private Nachricht senden Benutzer-Profile anzeigen
 
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.