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

Matrix filtern

 

Platin
Forum-Century

Forum-Century


Beiträge: 174
Anmeldedatum: 07.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.08.2010, 12:36     Titel: Matrix filtern
  Antworten mit Zitat      
Hey an Alle,

Ich habe eine 3-D Matrix, also K(:,:,j).
In jeder Untermatrix j, also K(:,:,j) stehen nun in den Zeilen Buchstaben und den Spalten Zahlen. Ich möchte jetzt nur die Zahlen der Spalten haben, welche bestimmte Buchstaben haben.
Eine Untermatrix könnte zb so aussehen:
a b c cd cc
1 4 3 2 1 5
2 7 8 9 10 7
3 2 6 6 12 11

gewünschte neue Untermatrix
c cc
1 2 5
2 9 7
3 6 11
Sagen wir ich möchte nun nur die Einträge haben mit ausschließlich c im namen.
Dann sollte meine neue Matrix, zb A(:,:,j) nun jetzt nur noch aus diesen Untermatrizen bestehen welche nur noch c in den spalten einträgen haben.
Weiß jmd mit welchem Befehl ich das machen könnte?

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: 04.08.2010, 22:38     Titel:
  Antworten mit Zitat      
Hallo,

die erste Frage wird sein, wie diese Matrix überhaupt aufgebaut sein soll. Strings und Zahlen können ja bekanntlich nicht in derselben Matrix stehen - außer in Cell-Arrays. Und bis jetzt siehts so aus, als ob das Array 2D wäre.
Wenn man sich das so ansieht, könnte eine Struktur die bessere Wahl zum Speichern der Daten sein.

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

Forum-Century

Forum-Century


Beiträge: 174
Anmeldedatum: 07.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.08.2010, 23:26     Titel:
  Antworten mit Zitat      
Ja also es soll wiederum eine 3-dimensionale Matrix rauskommen. diesmal enthalten die Untermatrizen aber nur die Spalten der Ch C... Ich lege kein Wert darauf das C Ch... in Header stehen. aber ich dachte das erleichter das filtern, wenn man sagen kann in spalte mit C werte kopieren oder so..
Ich überlege auch schon, aber mir fehlt einfach die Erfahrung aus der ich was ableiten könnte.

Grüße
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: 05.08.2010, 07:30     Titel:
  Antworten mit Zitat      
Hallo Platin,

ein kleines Progrämmschen, habe ich an der angehängten datei getestet.
vlt hilft dir bisschen weiter:
Code:

file='--------------------';

fid=fopen(file,'r');
M=dlmread(file,'',1,0);                      % alle Zahlen lesen
len=size(M,2);                                  % anzahl spalten ermitteln
format_string= repmat('%s',[1,len]); % habe ich gestern gelernt

C=textscan(fid,format_string,1);         % erste Zeile lesen


                                                   

index=[];
for ii=1:1:len
    if findstr(char(C{ii}),'CH')>=0  % prüfen ob die Strings CH enthalten
        index=[index ii];                 % wenn ja nummer der spalten merken
    end          
end

M_neu=M(:,index);                      % Alte Matrix filtern ;)
 


wenn es einfacher geht dann wird dir jemand bescheid sagen ;)

gruss

t.txt
 Beschreibung:

Download
 Dateiname:  t.txt
 Dateigröße:  256 Bytes
 Heruntergeladen:  384 mal

_________________

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

Forum-Century

Forum-Century


Beiträge: 174
Anmeldedatum: 07.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.08.2010, 19:16     Titel:
  Antworten mit Zitat      
hey,
danke dir vielmals.
werde das morgen gleich mal ausprobieren.
Also mir hat jmd gesagt das es mit dem Befehl importdata oder so, muss ich nochmal genau gucken, sehr einfach gehen soll.
aber erstmal gucken...

danke dir.
mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
Platin
Themenstarter

Forum-Century

Forum-Century


Beiträge: 174
Anmeldedatum: 07.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.08.2010, 08:11     Titel:
  Antworten mit Zitat      
Hey,

ich habe ein einfacherer Methode gefunden ^^.
Mit dem Befehl importdata geht es noch besser.
Ich schreibe das Programm auch mal damit und poste das dann mal, wenn geklappt hat.
Naja einfacher ist es dadurch eingentlich auch nicht geworden, da man ja anschließend noch filtern muss.
Trotzdem nicht schlecht die Funktion, wenn man Text und Zahlen erstmal getrennt haben möchte.

Aber ein Problem gibt es, darin sitze ich gerade noch, meine Matrix M wird ja selber über eine for Schleife ermittelt und ist nicht 2 sondern 3, dimensional.

Und den Befehl A=rapmat(B,n,m) kann verstehe ich eigentlich so, das er mir eine neue Matrix A generiert und meine ursprüngliche matrix kopiert und zwar zeilen und spalten *m bzw n. Aber ich kann diesen Befehel nicht mit '%s' in Verbindung bringen?

MfG

Zuletzt bearbeitet von Platin am 06.08.2010, 08:42, insgesamt 2-mal bearbeitet
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: 06.08.2010, 08:40     Titel:
  Antworten mit Zitat      
jetzt hast dus mit Strukturen zu tun^^
_________________

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

Forum-Century

Forum-Century


Beiträge: 174
Anmeldedatum: 07.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.08.2010, 08:57     Titel:
  Antworten mit Zitat      
hey,

also habe dein bsp ausprobiert. klappt einwandfrei, aber das problem wird jetzt das ganze in meine existierende schleife einzubauen, wobei M 3 dimensional ist.

Dieser Befehl fopen habe ich gelesen ist nur eine Art Berechtigung den File zu lesen, oder ? Muss man das machen, da ich ja mit dlmread auch alles


grüße
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: 06.08.2010, 09:25     Titel:
  Antworten mit Zitat      
im gegensatz zu textscan braucht dlmread nur den filename (gesamten pfad).
und :
Code:


daraus wird dann eine zeile und 3 spalten mit : %s%s%s
es ist nur damit ich bei textscan nicht mit hand tippen möchte.ausserdem wird die anzahl der %s im programm berechnet.
_________________

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

Forum-Century

Forum-Century


Beiträge: 174
Anmeldedatum: 07.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.08.2010, 10:01     Titel:
  Antworten mit Zitat      
hey,

also wie repmat funzt weiß ich.
ich frage mich gerade nur warum ich den file vorher mit fopen einlesen muss und dann ist fid ja nur eine zahl. und dann lese ich irgendwie diese zahl aus?
Wo liegt der unterschied zu zb dlmread oder so. Also fopen öffnet den file und weißt ihm ne zahl zu die sich bei jedem mal ausführen erhöht. Aber das ist doch blos ne zahl. naja und dlmread ließt den file ja auch.

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