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

Mehrere Reihen aus allen struct Feldern löschen

 

ansc
Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 05.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.11.2015, 13:02     Titel: Mehrere Reihen aus allen struct Feldern löschen
  Antworten mit Zitat      
Hallo zusammen,

ich stehe derzeit vor folgendem Problem:
Ich arbeite mit einem struct, welches 10 Felder besitzt.
So sieht beispielsweise eine Zeile des structs aus:
735811,368055556
300x1 double
300x1 double
300x71 double
300x71 double
300x71 double
300x71 double
15x1 double
0,4
0,4
Ich möchte jetzt gerne wenn ein Wert im 6.Feld =0 ist, dass die dazugehörige Zeile im 6.Feld und auch in allen anderen Feldern gelöscht wird.

Ich dachte erst, dass es mit einer for Schleife und einer if Bedingung funktionieren sollte. sowas in dieser Art(fehlen natürlich noch die andern Felder)
Code:
for k = 1:length(N)
    if  N(k).C(:,:) == 0
        N(k).C(:,:) = [];
    end
end
 


Allerdings ändert sich so gar nichts an meinem struct. Embarassed
Vielleicht hat jemand einen guten Tipp?
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 12.11.2015, 13:18     Titel:
  Antworten mit Zitat      
hilft rmfield ?
grüße
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
ansc
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 05.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.11.2015, 13:22     Titel:
  Antworten mit Zitat      
Hallo Winkow,

ich dachte rmfield löscht das gesamte Feld und das soll ja nicht passieren, sondern immer nur einzelne Zeilen in den double arrays.
Ich lasse mich aber natürlich gerne verbessern. Wink
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 12.11.2015, 14:00     Titel:
  Antworten mit Zitat      
Code:
N(k).C(:,:) = [];

das sah mir nicht nach der löschung einer zeile aus.
erstell mal ein lauffähiges beispeil das dein problem verdeutilicht. dann kann dir weitaus schneller geholfen werden.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
ansc
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 05.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.11.2015, 14:33     Titel:
  Antworten mit Zitat      
Dann hab ich da wohl mal wieder falsch gedacht Embarassed

Also ich habe mal eine Beispieldatei erstellt. Wenn du dir diese anguckst wirst du sehen, dass im Feld C in der zweiten und dritten Zeile Nullen vorkommen, dass heißt ich will diese beiden Zeilen löschen. Außerdem sollen dann noch alle zweiten und dritten Zeilen in den anderen Feldern gelöscht werden, also in allen Feldern die Zeilen löschen, in denen im Feld C eine Null steht.

Vielleicht erklärt das besser, was ich versuchen möchte?

N.mat
 Beschreibung:

Download
 Dateiname:  N.mat
 Dateigröße:  10.48 KB
 Heruntergeladen:  379 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 12.11.2015, 14:58     Titel:
  Antworten mit Zitat      
Code:
N.C(all(N.C==0,2),:)=[];

sowas?
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
ansc
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 05.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.11.2015, 15:03     Titel:
  Antworten mit Zitat      
Hallo Winkow,
ja das löscht jetzt schonmal eine der beiden Zeilen, das kann man ja dann noch anpassen, aber wie lösche ich jetzt die zugehörigen Zeilen in den andern Feldern?
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 12.11.2015, 15:39     Titel:
  Antworten mit Zitat      
Zitat:
zugehörigen Zeilen in den andern Feldern?
welche zugehöreigen? warum sind die zugehörig ? und welche anderen Felder?

Code:
ja das löscht jetzt schonmal eine der beiden Zeilen

welches ist die andere zeile ? wenn nur irgendwo eine null vorkommen soll kannst du das all einfach durch ein any ersetzen.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
ansc
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 05.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.11.2015, 15:45     Titel:
  Antworten mit Zitat      
Hi,
ja all hab ich schon ersetzt, trotzdem danke schonmal dafür.
Naja mit zugehörig meine ich folgendes.
In diesem Beispiel wurden ja jetzt die Zeilen 2 und 3 aus N.C gelöscht, ich hätte jetzt dann gerne das aus N.a, N.e, N.r, N.ra usw. (das meine ich mit Feldern) auch die zweite und dritte Zeile gelöscht werden.
Wenn aus N.C beispielsweise die 1. Zeile gelöscht wurde, dann müsste bei den anderen Feldern auch jeweils die 1.Zeile gelöscht werden.

Ist das jetzt verständlicher? Wenn nicht versuch ich gerne nochmal es besser zu erklären.
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 12.11.2015, 16:30     Titel:
  Antworten mit Zitat      
dann machst du das genau so für die anderen felder die du löschen willst.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
ansc
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 05.10.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.11.2015, 16:46     Titel:
  Antworten mit Zitat      
Ahja super danke schön.
Ich hab es irgendwie gerade nicht begriffen, dass ich ja nur das ändern muss, was vorne vor der Klammer steht.

Vielen Dank nochmal für die Hilfe Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 12.11.2015, 17:08     Titel:
  Antworten mit Zitat      
jup wichtig ist blos das man die nullen in C zuletzt löscht. alternativ kann man auch vorher den vektor
Code:
zwischen speichern
_________________

richtig Fragen
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.