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?
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.
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.
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
iffindstr(char(C{ii}),'CH')>=0% prüfen ob die Strings CH enthalten
index=[index ii]; % wenn ja nummer der spalten merken end end
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...
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
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
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.
_________________
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
Einstellungen und Berechtigungen
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
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.