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

Spalte aus Matrix komplett löschen

 

sexyphil
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 58
Anmeldedatum: 19.08.14
Wohnort: Bayern
Version: 2013a
     Beitrag Verfasst am: 29.05.2015, 11:03     Titel: Spalte aus Matrix komplett löschen
  Antworten mit Zitat      
Hallo,

ich lösche mit folgendem Code Spalten einer Zelle

Code:
cnt_lb1=get(handles.listbox1,'Value'); % Welche Spalten soll er löschen

matrix_all_data=getappdata(0,'matrix_all_data'); % Holt sich Zelle



for k=1:length(cnt_lb1)
   
   matrix_all_data{1,cnt_lb1(1,k)}=[];

   
end

setappdata(0,'matrix_all_data',matrix_all_data)


Leider, wenn ich mir anschließend die Zelle ansehe sind die Matrizen der Spalten zwar leer, allerdings ist da noch so ein kleines Viereck in den Spalten der Zelle und deswegen ist die Zelle immer noch so "lang" wie vorher. Gibt es da eine andere Möglichkeit?

Danke & Grüße!
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: 29.05.2015, 11:05     Titel:
  Antworten mit Zitat      
Hallo,

du löscht ja auch den Inhalt der Zelle und nicht die Zelle: ( ) statt { } ist die Lösung.

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

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 58
Anmeldedatum: 19.08.14
Wohnort: Bayern
Version: 2013a
     Beitrag Verfasst am: 29.05.2015, 12:09     Titel:
  Antworten mit Zitat      
hast du das so gemeint?

Code:
matrix_all_data(1,2)=[];
A null assignment can have only one non-colon index.


So sieht das ganze dann aus:

http://www.pic-upload.de/view-27185710/Unbenannt.jpg.html
Private Nachricht senden Benutzer-Profile anzeigen
 
Knygs
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 58
Anmeldedatum: 26.03.15
Wohnort: ---
Version: 2015b, 2017a, 2021a
     Beitrag Verfasst am: 29.05.2015, 12:56     Titel:
  Antworten mit Zitat      
hi,

ja, ich glaube harald meint das so

Code:
matrix_all_data(1,cnt_lb1(1,k))=[];

dabei "schiebt" sich bei einem Vektor der Vektor um immer ein Element zusammen und ändert seine Länge, ich würde das also eher ohne Schleife so machen:

Code:
matrix_all_data(1,cnt_lb1(1,:))=[];


du kannst aber auch aus einer mehrdimensionalen Matrix keine einzelne Zelle hinauslöschen, sonst hast du ja bei z.b. einer 2-dimensionalen Matrix eine Zeile/Spalte mit einem Element weniger als in den anderen Zeilen/Spalten, was in Matlab nicht erlaubt ist. Da würde ich es evtl mit NaN als Platzhalter versuchen.

vgl hier:
http://www.mathworks.com/matlabcent.....reader/view_thread/279354

vg
Private Nachricht senden Benutzer-Profile anzeigen
 
sexyphil
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 58
Anmeldedatum: 19.08.14
Wohnort: Bayern
Version: 2013a
     Beitrag Verfasst am: 29.05.2015, 13:31     Titel:
  Antworten mit Zitat      
Hallo,

danke für eure Hilfe. Ich habe die Fehlermeldung von vorher immer noch erhalten. Habe jetzt folgendes gefunden:

Code:
matrix_all_data = matrix_all_data(~cellfun('isempty', matrix_all_data));


Funktioniert.

Danke Euch!!!
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.