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

Elemente aus Vektor entfernen

 

Lilie98
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 19.11.07
Wohnort: Darmstadt
Version: 7.0.4.365
     Beitrag Verfasst am: 01.07.2010, 09:33     Titel: Elemente aus Vektor entfernen
  Antworten mit Zitat      
Hallo,
ich habe ein Problem mit folgendem Matlab-Programm:

Code:

rs = rs_skal_pos_ht;
grenzen = gr_pos_ht;
idx = [];
for i=1:length(grenzen)
    idx = [idx (find(rs > grenzen(i,1) & rs <=grenzen(i,2)))];
end
idx;
rs(idx) = [];
rs_pos_ht_ber = rs;
 


rs_skal_pos_ht ist ein Vektor mit 879 Einträgen, aus dem jene Elemente entfernt werden sollen, die in die Intervalle fallen, die in gr_pos_ht (10x2 Matrix) definiert sind.
Code:

gr_pos_ht =

          15          20
         132         137
         340         345
         480         485
         764         769
         814         819
         884         889
        1066        1071
        1616        1621
        1904        1909
 

Ich bekomme stets die Fehlermeldung:
Code:

Error in ==> rs_bereinigen at 73
    idx = [idx (find(rs > grenzen(i,1) & rs <=grenzen(i,2)))];

??? Error using ==> horzcat
All matrices on a row in the bracketed expression must have the
 same number of rows.
 


Irgendwie sehe ich den Fehler nicht...
Vielen Dank!
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.07.2010, 09:50     Titel:
  Antworten mit Zitat      
Hallo,

der Fehler liegt in der Notation [a b]. Vermutlich ist das Ergebnis von find hier ein Spaltenvektor und es klappt daher nicht. Also
Code:
idx = [idx; (find(rs > grenzen(i,1) & rs <=grenzen(i,2)))];


Ich würde aber ohnehin eher mit den logischen Bedingungen arbeiten:
Code:
idx = true;
for i=1:length(grenzen)
    idx = idx & (rs > grenzen(i,1) & rs <=grenzen(i,2));
end


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Lilie98
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 19.11.07
Wohnort: Darmstadt
Version: 7.0.4.365
     Beitrag Verfasst am: 01.07.2010, 10:29     Titel:
  Antworten mit Zitat      
Hei,

das mit den logischen Bedingungen funktioniert bei mir irgendwie nicht, ich bekomme immer idx = false (0) heraus, auch wenn ein Wert in das entsprechende Intervall fällt. Viell. mach ich aber auch was falsch..

Der Fehler in meinem Programm lag aber tatsächlich im fehlenden Semikolon, jetzt klappts. Vielen Dank für die Hilfe!

Grüße
Christian
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 01.07.2010, 11:35     Titel:
  Antworten mit Zitat      
Hallo,

da hat mich die Logik gerade wieder ausgetrickst... Wenn ich immer noch auf der Leitung stehe, müssen wir ver-oder-n.

Code:
idx = false;
for i=1:length(grenzen)
    idx = idx | (rs > grenzen(i,1) & rs <=grenzen(i,2));
end


Grüße,
Harald
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.