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

Anzahl gleicher Elemente und deren Häufigkeit im Vektor

 

ibejustme
Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 12.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.03.2010, 14:02     Titel: Anzahl gleicher Elemente und deren Häufigkeit im Vektor
  Antworten mit Zitat      
Hallo liebe Matllab-User,

ich stehe gerade wie der Ochs vorm Berg:

ich habe einen Vektor a in dem ca. 8000 Werte zwischen 0 und 11 stehen können. Jetzt muss ich zum einen die Stellen im Vektor finden an denen diese Zahlen stehen.

Beispiel:
Code:

find(a(1:end,1) == 6)
 

funktioniert ja einwandfrei.
Jetzt möchte ich aber noch zählen wie oft denn hintereinander z.B. die 6 im Vektor vorkommt und wie oft sie mehrmals hintereinander vorkommt.

Beispiel:
a = [ 2 4 6 6 6 7 12 11 6 6 7 8 8 8 9 10];

Da wäre mein gewünschtes Ergebnis 3 3 und 9 2.


Code:

for t=1:length(a)
if a(t,1) == 6
counter = counter +1;
end
end
 

So krieg ich ja nur die Gesamtzahl der 6 raus, was natürlich viel eleganter mit
Code:
geht. Wie krieg ich bei meiner Schleife oben die jeweiligen Indizes mit?

Viele Grüße und Danke für die Hilfe
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 16.03.2010, 16:26     Titel:
  Antworten mit Zitat      
Hallo
vielleicht so:

Code:

a = [ 2 4 6 6 6 7 12 11 6 6 7 8 8 8 9 10];

% steigende Flanke suchen
find_up_pos    =  @(z)findstr([0,z,0],[0,1]);
% fallende Flanke suchen
find_down_pos =@(z)findstr([0 z 0],[1 0])-1;

elem = unique(a)

% habe mich fuer Struktur entschieden, weil einfach einfacher Elemente abzulegen

haeuf = struct(...
'elem',num2cell(elem),...
'pos_blocks',[],...
'haeuf_blocks',[],...
'ges',[])

% durch alle elemente des arrays durchgehen
for k= elem
 
   % position von steigender und fallender Flanke suchen  
   pos  = [find_up_pos(a==k)' find_down_pos(a==k)']
   %
   % in Struktur ablegen
   haeuf(k==elem).pos_blocks   = pos;
   %
   % Anzahl in zusammenhängenden Blocks ablegen
   haeuf(k==elem).haeuf_blocks= pos(:,2)-pos(:,1)+1;
   %
   % Gesamt Anzahl der Einzelelemente
   haeuf(k==elem).ges= sum(pos(:,2)-pos(:,1)+1)
end
 



Zitat:
Da wäre mein gewünschtes Ergebnis 3 3 und 9 2.


Habe nicht verstanden das Ergebnis, erkläre mal die Werte!
Private Nachricht senden Benutzer-Profile anzeigen
 
Zenon
Forum-Guru

Forum-Guru


Beiträge: 292
Anmeldedatum: 20.01.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.03.2010, 17:29     Titel:
  Antworten mit Zitat      
denny hat Folgendes geschrieben:
Hallo
Zitat:
Da wäre mein gewünschtes Ergebnis 3 3 und 9 2.


Habe nicht verstanden das Ergebnis, erkläre mal die Werte!


Ich denke es geht vom Beispiel-Vektor aus und heißt:

6 wurde an Stelle 3 dreimal hintereinander gefunden und an Stelle 9 zweimal.
Private Nachricht senden Benutzer-Profile anzeigen
 
ibejustme
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 12.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.03.2010, 17:41     Titel:
  Antworten mit Zitat      
@Zenon,

Exakt, ich gehe bei meinem Ergebnis vom Beispielvektor aus.

@Denny

vielen Dank für den Beispielcode, den werde ich gleich mal ausprobieren.

Vielen Dank für eure Hilfe
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.