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

vektoren filtern

 

chicago97

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2014, 20:02     Titel: vektoren filtern
  Antworten mit Zitat      
Hallo zusammen,

ich habe 30 Vektoren, alle habe die gleich länge. Bei den einzelnen Vektoren fehlen jetzt einige Messwerte und diese sind mit NaN ersetzt worden. Leider sind die NaN-Werte nicht bei allen Vektoren an der gleichen Stelle, bzw. haben die gleiche Anzahl. zB. hat der Vektor x1 55 Einträge mit NaN, der Vektor x3 aber nur 2.

Ich jetzt alle NaN-Werte entfernen und die Vektoren auf die gleiche Länge bringen. Bis jetzt hab ich das so gemacht:

Code:

x1; %vektor eins, Länge=360, NaN-Werte 11
x2; %vektor zwei, Länge=360, Nan-Werte 14

%finden der nan-Werte
nan_x1 = find(isnan(x1));
nan_x1 = find(isnan(x2));

%entfernen der NaN-werte;
% die Werte bei den Indexen werden rausgelöscht, zuerst für nan-Werte von x1, dann von x2
x1(nan_x1)=[];
x1(nan_x2)=[];

%und nochmal das gleiche für den zweiten vektor
x2(nan_x2)=[];
x2(nan_x1)=[];

%ich will später immer x1 mit x2, x1 mit x3, x1 mit x4 ... vergleichen, also der erste vektor bleibt immer gleich.

 


Wenn ich so vorgehe haben dann beide vektoren die gleiche länge. Das funktioniert jetzt leider nur so lange sich die NaN-Indexe nicht überschneiden.

Code:

x1; %vektor eins, Länge=360, NaN-Werte 11
x2; %vektor zwei, Länge=360, Nan-Werte 55

%finden der nan-Werte
nan_x1 = find(isnan(x1));
nan_x1 = find(isnan(x2));

%entfernen der NaN-werte;
% die Werte bei den Indexen werden rausgelöscht, zuerst für nan-Werte von x1, dann von x2
x1(nan_x1)=[]; %hier wird der Vektor gekürzt und hat nur mehr eine Länge von 349

%nan_x2 hat jetzt aber auch NaN-werte bei den index 360, diesen gibt es jetzt aber nicht mehr, weil ja mein vektor bereits gekürzt ist und nur mehr 349 werte hat

x1(nan_x2)=[];

index of element to remove exceeds matrix dimensions.

 


Irgendwie hab ich aber keine idee, wie ich es anders machen soll. Vielleicht kann mir von euch einer weiterhelfen, die NaN-Werte aus den Vektoren zu entfernen und alle Vektoren auf die gleiche Länge zu bringen Smile

Danke schonmal.
cu.
chi


Harald
Forum-Meister

Forum-Meister


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

haben die Vektoren die gleiche Länge?
In welcher Form stehen sie zur Verfügung?
Doch nicht etwa als x1, x2, ..., x30?!

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



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2014, 20:32     Titel:
  Antworten mit Zitat      
Hallo,

zu Beginn haben die Vektoren alle die gleiche Länge. Alle Vektoren enthalten unterschiedliche viele NaN-Werte, wenn ich diese Entferne, habe sie nicht mehr die gleiche Länge. Da ich den Vektor x1 jeweils mit den anderen Vektoren vergleichen will (zB. scatterplot erstellen), muss ich die restlichen Vektoren auf die gleiche Länge bringen, wie die von x1.

Die Vektoren lese ich aus einem txt-file. Was meinst du mit

Zitat:

Doch nicht etwa als x1, x2, ..., x30?!


So heißen die Vektoren, falls du das meinst.

cu.
 
Harald
Forum-Meister

Forum-Meister


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

wenn die Daten aus einer Text-Datei kommen, dann würde ich eine Matrix M daraus machen. Aus dieser kann man alle Zeilen entfernen, die NaN enthalten - in denen die erste Spalte NaN ist - oder was auch immer.

Zeilen entfernen, die NaN enthalten:
Code:
M(any(isnan(M),2), :) = [];


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



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2014, 22:30     Titel:
  Antworten mit Zitat      
Hallo,

ich lese die einzelnen vektoren ein und mache dann eine Matrix draus mit

Code:

M = zeros(30,360)
M(1,:) = x1;
M(2,:) = x2;
...
 


und daraus dann die NaN-Werte entfernen?

cu.
 
Harald
Forum-Meister

Forum-Meister


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

nur die NaN-Werte entfernen geht nicht, da sonst die Matrix-Struktur verloren geht. Weitere Vorschläge s.o.

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



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.07.2014, 10:24     Titel:
  Antworten mit Zitat      
hallo,
danke. hab das problem anders gelöst Smile
glg
 
Harald
Forum-Meister

Forum-Meister


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

schreib doch bitte dazu, wie du das Problem gelöst hast. Dann können andere, die auf diesen Beitrag stoßen, auch davon profitieren.

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.