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

Spalten einer Matrix löschen

 

kathy20

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.12.2007, 22:51     Titel: Spalten einer Matrix löschen
  Antworten mit Zitat      
hallo, ich habe folgendes Problem,
ich soll ein Programm erstellen mit einer 9x10 Matrix. Jeweils zwei Spalten sind gleich, diese sollen gelöscht werden und ebenfalls eine beliebige Zeile, damit eine 8x8 Matrix entsteht. Die einzelne Zeile löschen kann ich noch, aber bei mir entsteht ein Problem, wenn ich das Programm die Matrix durchlaufen lassen auf der Suche nach den jeweils gleichen Spalten. Kann mir jemand helfen und mir sagen, wie ich die beiden Spalten löschen kann???

liebe Grüße
Kathrin


Michaela
Forum-Century

Forum-Century


Beiträge: 239
Anmeldedatum: 12.07.07
Wohnort: ---
Version: bis 2007b
     Beitrag Verfasst am: 02.12.2007, 08:24     Titel:
  Antworten mit Zitat      
Hallo Kathy, verstehe deine Frage leider nicht ganz.

Code:

Zeilen löschen matrix(ii,:) = [];

Spalten löschen matrix(:,ii) = [];
 

Wo genau taucht der Fehler in deinem Programm auf? Bei der Suche oder beim Löschen?

Edit by denny: Bitte die Code-Formatierung verwenden. Danke!
_________________

---------------------------------------------------------------
Leider habe ich daheim zwar Internet aber kein Matlab - daher sind alle Syntaxbeispiele circa Angaben.....
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.08.2010, 11:14     Titel:
  Antworten mit Zitat      
Hallo,

ich bekomme hier eine Fehlermeldung:
---------------------------------------------------
Code:

x=zeros(3,2);

for i=1:3;

    x(i,:)=N(i,:);  % N ist eine Matrix (10,2)
   
    while N(i,1) == N(i+1,1);  % für diese Zeile kommt der Fehler
        N(i+1,:) = [];
    end

end
 

-------------------------------------------------
ich möchte das die ersten 3Werte von Matrix N in x gespeichert werden, sollte die Zeile nach der gespeicherten dieselbe sein, so soll diese gelöscht und ne neue abfrage für die nächste zeile gemacht werden...

Edit by denny: Bitte die Code-Formatierung verwenden. Danke!
 
Fourier
Forum-Guru

Forum-Guru


Beiträge: 329
Anmeldedatum: 05.04.10
Wohnort: Karlsruhe
Version: 2009b
     Beitrag Verfasst am: 25.08.2010, 11:39     Titel:
  Antworten mit Zitat      
Hallo,

erfüllt das dein wunsch?
Code:

x=zeros(3,2);
M=unique(N,'rows');
x=M(1:3,:);
 


gruss
_________________

Ein schlechter General ist besser als zwei gute.
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.08.2010, 11:45     Titel:
  Antworten mit Zitat      
Nein, das passt eigentlich nicht.

Mein N sieht so aus:
2 9
3 4
3 8
4 6

Deine Lösung so:
2 9
3 4
3 8

Es sollte aber so aussehen:
2 9
3 4
4 6

Die 3. Zeile von N ist gelöscht, da die 2. Zeile von N bereits eine 3 enthält.

DANKE
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 25.08.2010, 11:52     Titel:
  Antworten mit Zitat      
Hallo

der Fehler tritt auf, weil du in Matrix N Zeilen löscht.
Da N immer kleiner wird, kann es zum Fall kommen wo Index i größer als vorhandene Zeilen in N sein wird.
Deswegen noch Abfrage anbauen, welche Dimension berücksichtigt

Code:

x=zeros(3,2);
N       = [2 9; 3 4; 3 8; 4 6];
for i=1:3
   
   if i <= size(N,1)
      x(i,:) = N(i,:);  % N ist eine Matrix (10,2)
   end
   while i < size(N,1) && N(i,1)== N(i+1,1)
      N(i+1,:) = [];
   end
   
end
 



so geht es ohne Schleife:
Code:

N       = [2 9; 3 4; 3 8; 4 6];
x       = zeros(3,2);
[M,idx] = unique(N(:,1),'rows','first');
idx     = sort(idx);
if length(idx)>= size(x,1)
   idx  = idx(1:3);
end
x       = N(idx,:)
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Fourier
Forum-Guru

Forum-Guru


Beiträge: 329
Anmeldedatum: 05.04.10
Wohnort: Karlsruhe
Version: 2009b
     Beitrag Verfasst am: 25.08.2010, 12:05     Titel:
  Antworten mit Zitat      
Hallo,
Zitat:

sollte die Zeile nach der gespeicherten dieselbe sein, so soll diese gelöscht

Zitat:
Code:

Mein N sieht so aus:
2 9
3 4
3 8
4 6


naja laut deiner aussage dürfen in N gar keine Zeilen gelöscht werden, ich sehe keine ähnlichen zeilen.
oder sehe ich etwas falsch Question Question
_________________

Ein schlechter General ist besser als zwei gute.
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 25.08.2010, 12:53     Titel:
  Antworten mit Zitat      
Zitat:

sollte die Zeile nach der gespeicherten dieselbe sein, so soll diese gelöscht

Da stimme ich Fourier ein, da hast du uns total verwirrt. Was willst du denn haben? noch mal erklären bitte.

Zuletzt bearbeitet von denny am 15.05.2013, 18:20, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.08.2010, 13:09     Titel:
  Antworten mit Zitat      
nicht gleich verwirren lassen :)

es passt schon, wenn die 3.Zeile von N gelöscht wird, da N(2,1)==N(3,1)...
 
ripper1986
Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 05.02.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.05.2013, 17:22     Titel:
  Antworten mit Zitat      
mit dem Denkanstoß habe ich das Problem nun gelöst Smile. Alles sieht schön und übersichtlich aus Wink

Ich habe mit bitget eine Matrix erstellt, diese sortiert und dann die einzelnen Zeilen mit der Ausgangsmatrix multipliziert. Anschließend habe ich einen Test durchgeführt un zu sehen, ob der Ergebnisvektor größer oder gleich dem Einsvektor ist

Viele Grüße,
F
Private Nachricht senden Benutzer-Profile anzeigen
 
Julius96

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.10.2018, 12:54     Titel: Format einer Spalte ändern
  Antworten mit Zitat      
Hallo liebe Community,

ich habe eine Tabelle mit 473 Zeilen und 13 Spalten. Ich würde jetzt gerne das Format von nur den letzten beiden Spalten ändern, damit mir mehr Nachkommastellen angezeigt werden.
Ich wäre für jede Hilfe dankbar, danke Smile

Ich habe noch ein Foto angefügt. Die letzten 2 Spalten sind Grid longitude und Grid latitude Smile

Screenshot (15).png
 Beschreibung:

Download
 Dateiname:  Screenshot (15).png
 Dateigröße:  300.24 KB
 Heruntergeladen:  429 mal
 
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.