Forum: Digitale Signalverarbeitung / DSP / Machine Learning csv in Matlab importieren


von Benni N. (benninori)


Lesenswert?

Hi,
ich hoffe Ihr könnt mir bei folgendem Problem weiter helfen, bin nämlich 
nicht so wirklich fit mit Matlab:

Ich hab Messungen als csv vorliegen und will diese durch nen Filter 
jagen. Jetzt bin ich über die Funktion 'csvread' gestolpert. Meine das 
sollte damit gehen. In Simulink habe ich schon die passende 
Übertragungsfunktion für meinen Tiefpass 4. Ordnung. Irgendwie muss das 
doch gehen.
Ich scheitere jetzt gerade schon an der Anzahl meiner Messwerte. Ich 
führe folgendes aus:
M = csvread('messung.csv', 6, 0)
Das funktioniert soweit auch erstmal, aber ich habe wohl zuviele 
Messwerte und er bricht bei 40.000 ab. Kann man dieses Problem irgendwie 
umgehen?

Und wie kann ich diese Messwerte dann in Simulink weiter verwenden?

Oder gibt es noch eine bessere Lösung?

Jetzt hab ich eine Quelle für Simulink gefunden die direkt '*.mat' 
verwenden. Aber wie bekomme ich meine *.csv' in dieses Format?

von Anon N. (fuechslein)


Lesenswert?

"Bricht ab" ist wie immer eine super Fehlerbeschreibung. Da werden alle 
hier sofort wissen was los ist und dir die Loesung präsentieren...

von Benni N. (benninori)


Lesenswert?

Oh, sorry. Ich bekomme zwar eine Matrix, aber Matlab hat wohl eine 
Grenze von 4000000 Datenpaaren. Ich bekomme die Meldung: 'Too many 
elements'

Für Simulink habe ich übrigens inzwischen eine passende Signalquelle 
gefunden. Jetzt muss ich nur noch alle Werte einlesen.

von Anon N. (fuechslein)


Lesenswert?

Die Limitierung waere mir neu. 4 Mio. is doch fast nix. 4 Mrd. waer a 
bisl was.

http://www.mathworks.com/support/tech-notes/1100/1107.html

von Benni N. (benninori)


Lesenswert?

Ok, der Link ist super. Danke.
Nur leider benutze ich Win7 64-Bit. Das ist nirgends aufgeführt und ich 
hab Angst da was kaputt zu machen wenn ich jetzt in der boot.ini 
rumstocher. Aber wenn ich mir die Tabellen so betrachte sollte das bei 
einem 64-Bit-Betriebstsytem eh kein Problem sein, oder?

Ich probier es nachher nochmal und schreibe dann hier nochmal genau die 
Meldung, die ich bekomme.

von Benni N. (benninori)


Lesenswert?

Also, wenn ich die Importfunktion von Matlab nutze bekomme ich die 
Meldung:
Value: 4000001x2 double
Too many elements

Bei der jetzigen Messung bin ich da grad so über der Grenze. Das Problem 
ist aber, dass ich gleich noch Messungen mache die wohl noch mehr 
Messwerte beinhalten.

Im Import Wizard erzählt er mir noch was von 64000016 Bytes und Class 
double.

Hilft das weiter?

von Benni N. (benninori)


Lesenswert?

Und noch was: meine Messwerte muss ich noch verschieben, d.h. zur Spalte 
1 der Matrix einen Wert addieren, bzw. subtrahieren. Habe es wie folgt 
probiert:

N = size(M);
for i=1:N(1)
    C(i,1)=A(i,1)+5;
end

bekomme aber nur eine Endlosschleife. Was mach ich falsch? Das muss doch 
irgendwie gehen.

von Anon N. (fuechslein)


Lesenswert?

Ich arbeite mit Arrays die vieel groesser sind als deine. Das sollte 
normal kein problem sein. In dem Link steht was von Daten importieren 
limierung. Hast du das gelesen? Du musst evtl. eine andere Funktion 
benutzen um deine Daten zu importieren...
"Textscan anstatt load". Steht aber im text... Wie schaut denn dein code 
aus?

von Benni N. (benninori)


Lesenswert?

Ich bin jetzt auf den Import Wizard umgestiegen. Taugt der nichts?

von Anon N. (fuechslein)


Lesenswert?

Weis net, sollte alles dokumentiert sein bzw. probiers doch einfach aus. 
Net so faul sein! ;)

von benninori (Gast)


Lesenswert?

ok, zu später stunde klappt jetzt alles. danke für deine unterstützung.

von Anon N. (fuechslein)


Lesenswert?

Super. Glückwunsch. Noch eine Bitte: Kannst du posten was das Problem 
war und wie du es nun behoben hast. Grund ist dass es oft vorkommt das 
jemand anders das gleiche Problem hat (womöglich in ein paar Jahren in 
der Zukunft) und dann viell. auf diesen Thread per Google stößt. Dann 
wäre es gut das die Person hier die Lösung auch gleich sieht... So 
passiert das idealerweise immer damit wir die Datenbank "Internet" immer 
schön sinnvol erweitern. ;)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.