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

aus verschiedene Substructure nur gewisse Teile plotten

 

Numinis
Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 05.12.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.01.2012, 16:21     Titel: aus verschiedene Substructure nur gewisse Teile plotten
  Antworten mit Zitat      
Hallo!

Wie kann man aus einem Structure-Array nur gewisse Teile aus verschiedene Substructure plotten, die als Linie dargestellt werden.
Ein Beispeil veranschaulicht die Sache wahrscheinlich besser:
Ich habe z. B. ein Sturcture-Array dieser Form:
Code:
S.aa = [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20];
S.bb = [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20];
S.c = [3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60];
S.d = [3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60];
S.e = [3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60];
S.f = [3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60];
S.g = [3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60];
S.hh = [1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20];
S.i = [3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60];
S.j = [3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60];
und ein normales Array mit Indizes:
Code:
index = [2 5 7 9 10 15 20];
Jetzt möchte ich Graphen plotten, aus den Substructure ohne Doppelbuchstaben mit den Funktionswerten der Indizes. Hier würde ich dann für den ersten Graphen eine Linie bei 6 bekommen und für den Zweiten bei 15 usw.

Wie bekomme ich das hin?
Ich finde dafür einfach keine Lösung. Mein Ansatz sieht folgendermaßen aus:
Code:
for ii=1:length(index)
    hilfe1 = structfun(@(x) x(index(ii)),S);
    hilfe2(:,ii) = hilfe1;
end

hold all
for ii=3:size(hilfe2,2)
    plot(hilfe2(:,ii))
end
hold off
Da sind dann aber immer noch die Substructure mit drinnen, die ich gar nicht plotten möchte. Mit ein Problem ist, dass bei einem anderen Structure-Array sich die Substructure mit den Doppelbuchstaben an einer anderen Stelle stehen. Da müsste irgendwie eine automatische Abfrage gemacht werden, nur ich wüsste überhaupt nicht wie.

Für euch Hilfe bin ich sehr dankbar!
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: 10.01.2012, 21:38     Titel: Re: aus verschiedene Substructure nur gewisse Teile plotten
  Antworten mit Zitat      
Hallo Numinis,

Ein "Struct-Array" (nicht "Structure"-Array) sieht so aus:
Code:
S(1).b = 1:4;
S(2).b = 4:17;
S(3).b = 0;

Ein "Substruct" ist z.B.:
Code:
S.T.b = 5;

Nun ist T ein Substruct. Allerdings ist T auch ein Field (oder auch "Feld" in diesem Forum) von S. b ist ein Field des Structs T, aber kein Substruct.

Die Bedeutung eines Feldes in der Anzahl der Buchstaben zu kodieren, ist sehr indirekt und kaum nachvollziehbar.

Zitat:
Jetzt möchte ich Graphen plotten, aus den Substructure ohne Doppelbuchstaben mit den Funktionswerten der Indizes. Hier würde ich dann für den ersten Graphen eine Linie bei 6 bekommen und für den Zweiten bei 15 usw.

Das verstehe ich nicht. Du möchtest nur die Inhalte der Felder mit ein-buchstabigem Namen verwenden. Aber woher kommen dann genau die "Linien"?

Die Inhalte der ein-buchstiben Felder bekommst Du so:
Code:
Field = fieldnames(S);
FieldLength2 = Field(cellfun('length', Field) == 2);
for iField = 1:length(FieldLength2)
  disp(S.(FieldLength2{iField}));
end

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Numinis
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 05.12.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2012, 12:40     Titel:
  Antworten mit Zitat      
Also das Beispiel ist vielleicht nicht das Beste. Im Anhang schicke ich mal eine gepackte Datei mit Daten, mit an denen ich das unteranderem durchführen will.
In 'S.mat' befinden sich mehrere Messungen an unterschiedlichen Positionen einer Probe mit frequenzabhängigen Messwerten, allerdings habe ich da auch noch andere Messungen drin, wie z.B.: Luft, die ich nicht plotten möchte, aber auch nicht löschen kann. Jetzt möchte ich für einzelne Frequenzen (befinden sich in 'freqzenzen.mat') für bestimmte Messungen (die verschiedenen Positionen) die Werte plotten. Die Indizes der Messwerte mit für die jeweiligen Frequenzen befinden sich in 'index.mat'.
Zum Schluss sollte dann sowas herauskommen, wie es in der PDF-Datei zu sehen ist, was ich aufwendig zufuss erstellt habe, es aber noch 50mal machen möchte.
Ich hoffe, es ist etwas klarer geworden mein Problem und es tut mir Leid, wenn ich mit der Bezeichnung einiger Dinge zusätzlich für Verwirrung gesorgt habe, aber leider kenne ich mich nicht wirklich gut mit Matlab aus. Schon einmal vielen Dank für deine Hilfe!

Besten Gruß, Matthias

daten.rar
 Beschreibung:
in 'daten.rar' befinden sich:
S.mat
index.mat
frezquenzen.mat
Messung.pdf

Download
 Dateiname:  daten.rar
 Dateigröße:  251.01 KB
 Heruntergeladen:  342 mal
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.