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

Leerstellen nicht betrachten bzw. eleminieren....

 

ms1080
Forum-Century

Forum-Century


Beiträge: 203
Anmeldedatum: 02.12.09
Wohnort: ---
Version: R2009
     Beitrag Verfasst am: 03.05.2011, 10:00     Titel: Leerstellen nicht betrachten bzw. eleminieren....
  Antworten mit Zitat      
hi

ich habe mit Hilfe von

Code:


[xlsfile,path2xls] = uigetfile ('*.xls', 'Bitte wählen..');
rawdata1 = xlsread(fullfile(path2xls, xlsfile));

 


eine Exceltabelle eingelsen. Die erste Zeile enthält keine Werte, nur Überschriften! Die erste Spalte enthält in jeder Zeile Werte, die zweite, dritte, vierte und fünfte nicht!! Was ich jetzt möchte, ist die Lücken in der zweiten bis fünften Spalte zu igrnorieren.
Soll heißen ich will eine Matrix haben, die in Ihrer ersten Spalte die Spalte 1 abbildet und in Ihrer zweiten Spalte die Spalte 2 der Exceltabelle abbildet.
Die Zeilen, die in der zweiten Spaltet nicht mit Werten gefüllt sind sollen natürlich rausfallen, unzwar so, dass auch die Werte die in Spalte 1 stehen dann nicht in der Matrix auftauchen.

Bsp.:

geg.:
Spalte1 Spalte2 ....
12 3
10 2
11
15 4
19
45 5

Lösung soll so aussehen:

Spalte1 Spalte2
Spalte1 Spalte2 ....
12 3
10 2
15 4
45 5

verständlich?

Tipps für die Lösung?

MfG

Nitram
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: 03.05.2011, 12:43     Titel:
  Antworten mit Zitat      
Hallo,

dann dürften die Werte nach MATLAB als NaN reinkommen. Also:

Code:
data(isnan(data(:,2)), :) = [];
oder z.B. auch
Code:
data(any(isnan(data),2),:) = [];


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

Forum-Century

Forum-Century


Beiträge: 203
Anmeldedatum: 02.12.09
Wohnort: ---
Version: R2009
     Beitrag Verfasst am: 04.05.2011, 08:04     Titel:
  Antworten mit Zitat      
Hi Harald,

erstmal danke für deine mühen, aber irgendwie funktioniert das nicht so wie ich es gerne hätte. Ich habe dir mal die exceltabelle hinzugefügt, damit du siehst, worum es geht!

wie gesagt, ich brauche je eine matrix der form:

M1 = [1,A]
M2 = [1,B]
M3 = [1,C]
M4 = [1,D]
M5 = [1,E]

Halt immer so, dass ich die zweilen rausschmeiße, die nicht belegt sind, will also keine NaN drin stehen haben, weil die mir beim weiteren rechnen immerwieder böse auffallen.

Danke für deine Mühe.

Test.xls
 Beschreibung:

Download
 Dateiname:  Test.xls
 Dateigröße:  28.5 KB
 Heruntergeladen:  303 mal
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: 04.05.2011, 08:13     Titel:
  Antworten mit Zitat      
Hallo,

dann würde ich das von mir genannte wiederholt auf Untermatrizen anwenden, also auf
Code:
M(:, [1 2])
M(:, [1 3])
etc.

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

Forum-Century

Forum-Century


Beiträge: 203
Anmeldedatum: 02.12.09
Wohnort: ---
Version: R2009
     Beitrag Verfasst am: 04.05.2011, 09:40     Titel:
  Antworten mit Zitat      
hi harald,

das ganze funktioniert, aber er liest mir meine 37 zeile aus dem excelsheet nicht aus?!
hast du dafür eine erklärung?

MfG

Nitram
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: 04.05.2011, 10:03     Titel:
  Antworten mit Zitat      
Hallo,

zunächst nicht. Poste doch bitte den Code in der Form, wie du ihn jetzt verwendest.

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

Forum-Century

Forum-Century


Beiträge: 203
Anmeldedatum: 02.12.09
Wohnort: ---
Version: R2009
     Beitrag Verfasst am: 04.05.2011, 10:26     Titel:
  Antworten mit Zitat      
ja gerne:

Code:


test = rawdata1(any(isnan(rawdata1),2),:);
fprintf('Test %.2f \n',test);

 


Wie gesagt, die komplette Zeile 37 bzw. wenn die erste Zeile (Tabellenkopf) noch vorhanden ist dann die 38. Zeile nimmt er nicht mit????!!!


Dann bilde ich mir meine Matrix wie folgt:

Code:


a = [test(:,1);test(:,2)];
a2 = reshape(a,45,2);

 


Und will dann anschließend mit:

Code:


b = find(a2(:,2)==NaN);

 


alle Zeilen der Matrix mit NaN finden und diese im anschluß löschen!
soweit bin ich aber noch nicht!

MfG

Nitram
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 04.05.2011, 10:39     Titel:
  Antworten mit Zitat      
Hallo ms1080,

Genau das geht mit NaN's nicht:
Zitat:
Code:
b = find(a2(:,2)==NaN);

Ein Vergleich mit NaN ergibt immer FALSE, also auch für:
Code:
NaN==NaN
% >> 0  !!!!

Also immer ISNAN verwenden, um NaN's aufzuspüren.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
ms1080
Themenstarter

Forum-Century

Forum-Century


Beiträge: 203
Anmeldedatum: 02.12.09
Wohnort: ---
Version: R2009
     Beitrag Verfasst am: 04.05.2011, 10:46     Titel:
  Antworten mit Zitat      
ja klar,

so wäre es richtig, wie gesagt, soweit war ich noch nicht:

Code:

b = find(isnan(a2(:,2)));
 


Nur muss ich nur noch diese Zeilen als meiner Martix a2 löschen, und zufrieden bin ich fürs erste, wäre da nicht das Problem mit der 37 Zeile???!!! Crying or Very sad
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: 04.05.2011, 17:14     Titel:
  Antworten mit Zitat      
Hallo,

das Problem ist in der 38. Zeile, richtig? Ist ja auch kein Wunder, weil du mit dieser (meiner Ansicht nach unsinnigen) Zeile genau diese Zeile rauswirfst:
Code:
test = rawdata1(any(isnan(rawdata1),2),:);


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.