Hallo
Kann mir jemand auf die schnelle eine Routine sagen die eine Matrix (txt; Trennung: tab; Dezimalz.: Komma) ein liest und alle leeren zeilen löscht ?
Die leeren zeilen sind ausschließlich am anfang der Matrix
die werte sind positiv und negativ und die Startzeile dieser Werte ist in jeder Matrix anders.
Ich habe zurzeit das Tool genommen welches mir leere zellen löscht
Problem VIEL zu langsam nach 10min ist er erst in der 3 spalte von 18.
Wäre schön wenn mir jemand Helfen könnte da ich etwas unter zeit not stehe.
Eine Matrix ist immer rechteckig. Wieso können dann "leere Zeilen" drin stehen? Und TABs kommen in Matrizen nicht vor.
Ich nehme an, Du meinst ein Text-File im TAB-separiertem Format. Was geschieht, wenn Du das mit CSVREAD einliest?
Das Komma musst Du zunächst gegen einen Punkt austauschen (Suche einfach im Forum oder im Internet danach, das Thema wurde bereits oft besprochen).
Zitat:
Ich habe zurzeit das Tool genommen welches mir leere zellen löscht Problem VIEL zu langsam nach 10min ist er erst in der 3 spalte von 18.
Wir können nicht wissen, welches Tool Du hier genommen hast. Es ist kaum vorstellbar, dass irgendein Programm 10 Minuten braucht um 18 Files zu bearbeiten. Da bin ich ja von Hand mit einem Editor schneller!
Bitte versuche Deine Frage nochmal klar und eindeutig zu stellen. Je mehr die Leser raten müssen, desto wahrscheinlicher ist es, dass eine Antwort mehr Verwirrung stiftet als hilft.
Ja natürlich das TXT ist in den Oberen Zeilen leer
Das Tool mein ich das Import Tool und das macht ja forgendes
Code:
for col=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18] % Converts strings in the input cell array to numbers. Replaced non-numeric % strings with NaN.
rawData = dataArray{col};
for row=1:size(rawData, 1);
% Create a regular expression to detect and remove non-numeric prefixes and % suffixes.
regexstr = '(?<prefix>.*?)(?<numbers>([-]*(\d+[\,]*)+[\.]{0,1}\d*[eEdD]{0,1}[-+]*\d*[i]{0,1})|([-]*(\d+[\,]*)*[\.]{1,1}\d+[eEdD]{0,1}[-+]*\d*[i]{0,1}))(?<suffix>.*)';
try
result = regexp(rawData{row}, regexstr, 'names');
numbers = result.numbers;
% Detected commas in non-thousand locations.
invalidThousandsSeparator = false;
ifany(numbers==',');
thousandsRegExp = '^\d+?(\,\d{3})*\.{0,1}\d*$';
ifisempty(regexp(thousandsRegExp, ',', 'once'));
numbers = NaN;
invalidThousandsSeparator = true;
end end % Convert numeric strings to numbers. if ~invalidThousandsSeparator;
numbers = textscan(strrep(numbers, ',', ''), '%f');
numericData(row, col) = numbers{1};
raw{row, col} = numbers{1};
end catch me
end end end
Verfasst am: 06.02.2015, 09:24
Titel: Noch mal hoch geholt mit txt beispiel
Hallo Gemeinde
Seban's Hinweis zur Hilfeseite war ganz gut leider half er mir nicht weiter.
Im Anhang eine Test Datei die es zu verarbeiten gilt.
Mit Kopfzeile, n-Leerzeilen und Einer Matrix
Die spalten der Matrix sind konstant die Zeilen nicht.
Die Leerzeilen sind ebenfalls variabel
Mh sehr gut
ich quäl mich 2h und du schüttelst das in 5 min hin =D
Naja wie auch immer ich habs getestet und folgendes erscheint
Code:
EDU>> Table_Test
Warning: Variable names were modified to make them valid MATLAB
identifiers.
> In makeValidName at 25
In @table\private\setVarNames at 48
In table.readTextFile at 278
In table.readFromFile at 33
In readtable at 118
In Table_Test at 2
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.