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

Vektor mit bestimmten Indices

 

toenchen
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 19.03.11
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 16.06.2011, 12:46     Titel: Vektor mit bestimmten Indices
  Antworten mit Zitat      
Hallo liebe Matlaber,


ich habe ein kleines Problem, bei dem ihr mir sicher helfen könnt. Ich bin noch ziemliche Anfängerin, deshalb kann es sein, dass meine Frage etwas dumm rüber kommt.

Also, ich habe einen Vektor f, der mit den Zahlen 1 -5 gefüllt ist. Ich soll diesen nun in fünf Vektoren unterteilen, die jeweils die Position aus f enthalten an der eine bestimmte Zahl steht.

Hier ein Beispiel:
Code:

f = [1 1 1 2 3 2 4 5 5 4 3]
for k = 1:size(f,2)
            if f(1,k) == 5
                Ui(k)=k
            elseif f(1,k) == 4
                di (k)=k
            elseif f(1,k) == 3
                Di (k)=k
            elseif f(1,k) == 2
                Pi (k)=k
            elseif f(1,k) == 1
                Fi(k)=k
            end
end


Das liefert mir aber nicht das gewünschte Ergebnis, bzw. nicht so wie ich es haben möchte. Ich möchte jeweils nur einmal die Untervektoren Ui-Fi am Ende angezeigt bekommen und dann ohne Nullen, sondern nur mit den k's. Wie kann ich das realisieren?

Ich muss nämlich danach mit den k's aus f weiterarbeiten und damit eine Matrix befüllen.

Über jede Antowrt bin ich aüßerst dankbar!
Private Nachricht senden Benutzer-Profile anzeigen


_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 16.06.2011, 13:02     Titel:
  Antworten mit Zitat      
Hallo toenchen,
ich bin mir nicht ganz sicher ob ich dich richtig verstanden habe, aber suchst du sowas?
Code:

f = [1 1 1 2 3 2 4 5 5 4 3];
unique_values = unique(f); % Findet einzelne Werte
for i = 1 : length(unique_values)
 values(i).unique_indexes = find(f==unique_values(i)); % Füllt die Indices in ein struct
end
 

values ist ein struct und du kannst dann auf die einzelnen vektoren wie folgt zugreifen:
Code:

values(1).unique_indexes
values(2).unique_indexes
values(3).unique_indexes
...
 

_________________

Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
toenchen
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 19.03.11
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 16.06.2011, 17:03     Titel:
  Antworten mit Zitat      
Hallo,

vielen Dank erstmal für die schnelle Antwort. Ja so meinte ich das! Ist natürlich viel eleganter und schneller deine Lösung. Da kann ich ja gleich noch weiterfragen, denn es ist so. Der Vektor f den ich gegeben habe, entsteht aus einer anderen Funktion, die eigentlich eine ganze Matrix befüllt. Dieses ist nun der erste Zeilenvektor. Ich will nun mit den values(1-5).unique_indexes weiterarbeiten.

Der Zeilenvektor f stellt die erste Reaktion dar, die mit den anderen 11 Reaktionen verglichen wurde und so eine Zahl zugewiesen bekommen hat. Jetzt ist es so, dass wenn in f an position 2 und 3 eine eins steht, dann ist die erste Reaktion(f) mit den Reaktionen 2 und 3 voll verknüpft. Daraus kann ich jetzt schließen, dass auch Reaktion 2 mit Reaktion 3 voll verknüpft ist und so in die Matrix, genauer den zweiten Zeilenvektor(Reaktion 2) and der 3. Position auch schon eine 1 reinschreiben.

So haben alle values(1-5) ihre Schlußfolgerungen.

Ich hoffe das kann man irgendwie verstehen. Und vielleicht könnte mir dazu nochmal jemand einen Ansatz geben, mit dem ich irgendwie arbeiten kann. Das wäre eine wirklich große Hilfe, vielen Dank!


PS: Ich habe mal ein bisschen mich mit unique vertraut gemacht und da ist ein bisschen mein Problem, ich muss immer diese fünf Unterkategorien erstellen, wenn eben in meiner untersuchten Zeile f keine 4 vorkommt soll der jeweilige Vektor halt leer bleiben, denn in der nächsten Zeile könnte ja eine vier vorkommen.

So wirft er mir halt einen Fehler: ??? Attempted to access unique_values(6); index out of bounds because numel(unique_values)=5.



Vllt hat dazu jemand noch eine Idee.
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.