%Matlab
>> dlmread('testrange.csv' ,',',[1,1,26,8]) Error using dlmread(line139)
Mismatch between file and format string.
Trouble reading number from file (row 1u, field 11u) ==> :30:00,7129\n
Warum um alles in der Welt ist die Syntax anders als in dlmread? csvread called doch nur dlmread. Und warum muss man dann die Skipp row und col wiederholen? Und was passiert wenn man es nicht macht?
Code:
>> csvread('magic.csv',3, 2, [4,2,5,5]) Warning: R and C should match RANGE(1:2). UseDLMREAD(FILE,DELIMITER,RANGE) instead.
> In dlmread at 107
In csvread at 50
Was passiert da für ein Quatsch? Eine Warnung und dann werden die rows und columns die geskipped werden sollen noch mit Nullen gefüllt?
Oder bin ich gerade komplett auf dem falschen Dampfer?
_________________
Verfasst am: 07.01.2013, 23:26
Titel: Re: dlmread range
Hallo markuman,
Zitat:
Bug oder Feature?
Eindeutig ein Feature. Siehe die Dokumentation von DLMREAD:
Zitat:
All data in the input file must be numeric. DLMREAD does not operate
on files containing nonnumeric data, even if the specified rows and
columns for the read contain numeric data only.
Ein "1:30:00" im File entspricht also nicht den Einschränkungen, die im Help-Text eindeutig beschrieben sind. Klarer geht es kaum.
Zitat:
Bzw habt ihr euch mal die range Angabe bei csvread angeguckt? Was Matlab da verlangt?
Ja, das habe ich. Was ist Deine Frage dazu?
Zitat:
Voraussgehend ein magic(10) was in der csv Datei steckt.
Das verstehe ich nicht.
Mir wird nicht klar, welches der Unterschied zwischen Deinen Erwartungen und den Ausgaben von DLMREAD und CSVREAD ist. Beide Funktionen geben natürlich equivalente Outputs zurück, da in CSVREAD ja "dlmread(filename, ',', r, c, rng)" aufgerufen wird. Und ich finde die Ranges nachvollziehbar.
Verfasst am: 08.01.2013, 08:52
Titel: Re: dlmread range
Moin Jan
Jan S hat Folgendes geschrieben:
Eindeutig ein Feature. Siehe die Dokumentation von DLMREAD:
Zitat:
All data in the input file must be numeric. DLMREAD does not operate
on files containing nonnumeric data, even if the specified rows and
columns for the read contain numeric data only.
Ein "1:30:00" im File entspricht also nicht den Einschränkungen, die im Help-Text eindeutig beschrieben sind. Klarer geht es kaum.
Ja. Wenn ein "1:30:00" also nicht den Einschränkungen entspricht, warum funktioniert es dann nicht?
Jan S hat Folgendes geschrieben:
Zitat:
Bzw habt ihr euch mal die range Angabe bei csvread angeguckt? Was Matlab da verlangt?
Ja, das habe ich. Was ist Deine Frage dazu?
Jan S hat Folgendes geschrieben:
Mir wird nicht klar, welches der Unterschied zwischen Deinen Erwartungen und den Ausgaben von DLMREAD und CSVREAD ist. Beide Funktionen geben natürlich equivalente Outputs zurück, da in CSVREAD ja "dlmread(filename, ',', r, c, rng)" aufgerufen wird. Und ich finde die Ranges nachvollziehbar.
Gruß, Jan
Ich finde die wiederholung des Range irgendwie unlogisch.
Dass man die zu skippenden Zeilen und Spalten 2x angeben muss (was man in DLMREAD nicht machen muss). Aber gut, das ist nur eine komische Eigenheit.
Wenn man die beiden allerdings nicht wiederholt, sondern andere angibt, füllt Matlab die Zeilen und Spalten, die ausgelassen werden sollten, einfach mit Nullen auf. Siehe den letzten Code-Block des ersten Postings.
Jan S hat Folgendes geschrieben:
Zitat:
Voraussgehend ein magic(10) was in der csv Datei steckt.
Das verstehe ich nicht.
Nur damit jeder weiß, was für Zahlen in der magic.csv Datei stehen, da ich in meinem 3. und 4. Code-Block eine andere CSV Datei eingelesen habe als die beiden zuvor verlinkten
_________________
Verfasst am: 08.01.2013, 11:40
Titel: Re: dlmread range
Hallo markuman,
Möglicherweise habe ich mehrdeutig formuliert. Der Hilfe-text besagt aber eindeutig, dass nur numerische Werte im DLMREAD-File akzeptiert werden. Mit '1:30:00' funktioniert es also nicht und dies ist explizit so dokumentiert. Ist Dir dabei etwas unklar?
Was genau meinst Du mit dem Ausdruck "skippen"?
Zitat:
Ich finde die wiederholung des Range irgendwie unlogisch.
Ok. Es gibt sicherlich auch andere Methoden der Indizierung. Viele Dinge sind in Matlab historisch gewachsen und TMW legt großen (wenn auch weniger als "absoluten") Wert auf Rückwärtskompatibilität.
Verfasst am: 08.01.2013, 17:59
Titel: Re: dlmread range
Zeile 1 ist ja genau so nicht numerisch wie Spalte 10. Beides soll ja durch die Angabe des range nicht gelesen werden. Was für Zeile 1 immer Funktioniert. Aber für die Spalte nur, wenn es ein numerischer Wert ist, oder nicht durch den range angegeben wird..
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.