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

Länge der Fields in Struct kürzen

 

Marissa

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.06.2017, 13:13     Titel: Länge der Fields in Struct kürzen
  Antworten mit Zitat      
Ich habe einen Struct der Größe 36x195, die Felder darin sind wiederum nur einfache Vektoren. (8000x1)
Ich möchte nun alle Fields auf 7000 kürzen. Also die ersten 1000 Einzelwerte kürzen.

Ich hab leider keine Idee, wie ich dies machen kann.

Für Tipps wäre ich sehr dankbar.


Xaratau
Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 14.06.17
Wohnort: ---
Version: R2018b
     Beitrag Verfasst am: 23.06.2017, 13:41     Titel:
  Antworten mit Zitat      
Hallo,

sind es mehrere properties pro Feld oder jeweils nur ein Vektor als property?

Wenn es jeweils nur einer ist löst sich das beschriebene Problem ganz einfach durch
Code:

for i=1:36
for j=1:195
struct(i,j).vektor(1:1000)=[];
end
end

lösen.

Grüße

Zuletzt bearbeitet von Xaratau am 23.06.2017, 13:58, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Marissa

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.06.2017, 13:49     Titel:
  Antworten mit Zitat      
Danke dir!

Also ja, ich habe in dem Feld dann nur einen Vektor.
Wenn ich das nun aber teste, kriege ich folgende Fehlermeldung: Deletion requires an existing variable. Woran könnte dies liegen?

Und noch eine Frage (bestimmt eine doofe Rolling Eyes ), aber sonst komme ich nie ganz dahinter. Smile
Es heisst ja .vektor - versteht Matlab, dass die Vektoren gemeint sind? Also alle einzeln? Und wenn ja, warum genau?

Danke schonmal!!
 
Xaratau
Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 14.06.17
Wohnort: ---
Version: R2018b
     Beitrag Verfasst am: 23.06.2017, 13:57     Titel:
  Antworten mit Zitat      
Hallo Marissa,

du musst natürlich die einzelnen Variablennamen noch durch deine eigenen Variablen ersetzen
z.B.

Code:
for i=1:36
for j=1:195
MarissasStruct(i,j).MarissasVektor(1:1000)=[];
end
end



Zu deiner zweiten Frage:
Was meinst du mit alle einzeln? Wenn du nur eine property im struct hast (Bei dir ein Vektor(8000x1)) kann er ja gar nichts anderes meinen, als diesen einen Vektor.

Insgesamt hast du 36*195=7020 Vektoren, diese sprichst du durch die verschiedenen Indices im struct (hier i und j) an.

Wie gut kennst du dich in Objektorientierter Programmierung aus?
Private Nachricht senden Benutzer-Profile anzeigen
 
Marissa

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.06.2017, 14:03     Titel:
  Antworten mit Zitat      
Aber genau das will ich ja vermeiden. Jeden einzelnen Namen eintragen zu müssen.
Meine Struktur kurz erklärt: ich klicke mein Struct an, dann habe ich 36x195 Felder, die ich anklicken kann, hinter jedem sich die gleiche Struktur verbirgt - eben dieser 8000x1 Vektor.

Ich möchte einfach alle Vektoren um 1000 kürzen, da das Messwerte sind und zu Anfang Einschwingvorgänge vorhanden sind, die meine weiteren Kalkulationen nicht beeinflussen sollen. Also für alle das gleiche.

Leider nicht so wirklich gut..
 
Xaratau
Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 14.06.17
Wohnort: ---
Version: R2018b
     Beitrag Verfasst am: 23.06.2017, 14:07     Titel:
  Antworten mit Zitat      
Haben alle Vektoren denselben Namen oder verschiedene?

Wie werden die Werte in die struct eingelesen?
Private Nachricht senden Benutzer-Profile anzeigen
 
marissa

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.06.2017, 14:11     Titel:
  Antworten mit Zitat      
Nein. Die haben pro Spalte den gleichen Namen, aber jede Spalte einen anderen. (Bsp.: P_gen, M_Gen, V_wind,usw.)
Sind einzelne Messwerte aus verschiedenen Durchläufen, die ich in einem Struct zusammengefügt habe, um diese eben alle gemeinsam zu kürzen. Dachte, das wäre einfacher, als 36 einzelne Mat-dateien mit 195 Feldern.

Wenn ich dann auf das Feld gehe, sind es wirklich Rohdaten, einfach eine Liste mit Zahlen.
 
Xaratau
Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 14.06.17
Wohnort: ---
Version: R2018b
     Beitrag Verfasst am: 23.06.2017, 14:16     Titel:
  Antworten mit Zitat      
Kannst du die struct bzw. deine Workspace hier hochladen?

Dann könnte ich mir das mal genauer anschauen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.06.2017, 14:24     Titel:
  Antworten mit Zitat      
Das funktioniert leider nicht, da die Datei zu groß ist. Sad
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.434
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.06.2017, 14:33     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Das funktioniert leider nicht, da die Datei zu groß ist. Sad

Ein bisschen mithelfen solltest du schon. Es reicht doch ein 2x3-struct statt 36x195.

Intuitiv würde ich sagen:
Code:
sFun = @(s) structfun(@(x) x(1001:end), s, 'UniformOutput', false);
data = arrayfun(sFun, data);


Zum Ausprobieren bräuchte ich aber auch passende Daten.

Grüße,
Harald

Edit: Code-Formatierung

Zuletzt bearbeitet von Harald am 23.06.2017, 15:06, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.06.2017, 15:02     Titel:
  Antworten mit Zitat      
das klappt! Danke sehr!!
 
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.