für die meisten hier ist die Frage sicher sehr logisch, ich bin allerdings Anfänger und mir fällt es gerade sehr schwer ein Verständnis für Matlab zu generieren.
Ich will Standardabweichung, Mittelwert und Rmssd einer Matrix über die ersten 50 Zeilen meiner Matrix und über alle Spalten(11) erstellen. Kann mir jemand helfen das zu Bauen, da es bei meiner aktuellen "Schleifen-Formulierung" noch nicht geht. Ich weiß nicht wie es geht.
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Ich hab noch eine Frage zum Schleifen- bauen.
Ich möchte jetzt gerne aus einem Ordner nacheinander alle csv-Dateien einlesen (die haben alle etwas um die 100 Zeilen und 11 Spalten) dann möchte ich das jede Datei mein bisher geschriebenes Programm durchläuft und aber von allen Datein dann eine excel abgespeichert wird.
ich habe anderen Beiträgen zum einlesen dazu schon durchgelesen, aber komme noch nicht so richtig voran, vielleicht kann mir jemand helfen.
bisher habe ich:
Code:
clear;
folder = 'Users\inesebner\Desktop\Matlab\CSV\';
flist = dir(folder); % geht schonmal nicht da steht im workspace 0x1 struct
Der Pfad sollte wohl mit Laufwerksbuchstaben beginnen, z.B. C:
Die doppelte for-Schleife ist nicht nötig. Seit einigen Releases unterstützt
dir
, dass man mit ** alle Unterverzeichnisse mit durchsucht. Es reicht also:
fullfile finde ich in der Handhabung angenehmer als filesep.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
danke schonmal soweit, ich hab mein Pfad jetzt nochmal geändert, ich hatte mein Ordner auf dem Desktop liegen und der war in der Cloud deshalb was das ein Problem jetzt im Speicher.
Wie geht es jetzt weiter? Ich möchte die Dateien dann als eine Matrix haben mit der dann weitergerechnet werden kann. Muss das dann nochmal mit dem Befehl dlmread erfolgen?
Und muss das in der Schleife erfolgen?
Muss das dann nochmal mit dem Befehl dlmread erfolgen?
dir gibt nur den Dateinamen, die Dateien müssen dann schon noch eingelesen werden. Aus der Doku: "dlmread is not recommended. Use readmatrix instead." Alternativ readcell oder readtable.
Zitat:
Und muss das in der Schleife erfolgen?
Ja, weil du ja jede der Dateien einlesen willst. Sonst wäre die Schleife auch etwas überflüssig...
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
ich bräuchte nochmal Hilfe. Ich hab heute morgen versucht meine Datein einzulesen und habe verschiedenes probiert, gelesen und ich schaffe es nicht. Ich verstehe es auch gerade nicht.
ich hab folgendes:
Code:
clear;
folder = 'Nordpol:\Benutzer\inesebner\Computer\Matlab\CSV';
%ich hab ein macbook bin mir schon nicht sicher ob nach Nordpol dann ein doppelpunkt
kommt. das Command Window sagt diesbezüglich nichts.... es passiert insgesamt
gerade nichts
loadname = fullfile(flist(k).folder, flist(k).name);
file= fopen(loadname); % ich dachte man könnte das so öffnen und einlesen muss ich % das in abhängikeit von k machen?
M= readmatrix(file);
% dann mein bisheriges programm
M = rmmissing(M);
M = M(1:50,:);
hier muss ich dann den befehl schreiben zum speichern
z.B. writematrix
Gerade wenn der Code (hier mangels Daten) nicht ausführbar ist, ist es wichtig, möglichst genau zu beschreiben, wo das Problem liegt. Insbesondere welche Fehlermeldungen ggf. auftreten.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
flist ist 0x1 struct, da ist wohl ein Problem. Aber ich hab mir öfter den Pfad des Ordners ausgeben lassen in dem die csv Datein liegen.
In dem Ornder befindet sich auch die aktuell m-File Datei mit der gearbeitet wird. Weil beim einzeln einlesen sollten die zusammen in einem Ordner liegen. (dachte ich).
was gibt denn
pwd
aus?
Ist bei Mac das Pfadtrennzeichen nicht / statt \ ?
Zitat:
Weil beim einzeln einlesen sollten die zusammen in einem Ordner liegen.
Muss nicht sein. Du gibst ja explizit an, wo nach Dateien gesucht werden soll. Wenn die Dateien aber im momentanen Verzeichnis liegen, kannst du das verwenden:
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
ich habe nochmal eine Fragen und benötige eure hilfe
Ich habe in einer for- Schleife über die Spalten ein Zeilenvektor als Ergebnis. Jetzt möchte ich gerne das Ergebnis speichern in eine Matrix um dann das mit writematrix in eine xls exportieren zu können.
Code:
Rmssd(k,:)= zeros(1, size(M,2)); % Zeros array als 1 Zeile mit der länge von size (M,2) for k = 1:size(M,2)% Schleife über Spalten
Rmssd(k) = sqrt(1/(length(M(:,k))-1) * (sum(diff(M(:,k).^2)))) end
aber ab der fünften Zeile stehen nur noch nullen drinnen.
Was mache ich falsch? Beeinflusst das vorherige Ergebnis dann das Schleifenergebnis? Muss ich nach der schleife den Wert abspeichern?
da soll ein Zeilenvektor pro Spalte rauskommen? Momentan kommt jedenfalls eine Zahl raus, und das erscheint mir auch so sinnvoll. Allerdings war in meinem Vorschlag eine Klammer falsch gesetzt: die Differenzen müssen ja quadriert werden, nicht die Differenz der Quadrate genommen werden.
Wenn, dann sollte vor der Schleife die gesamte Matrix (also nicht nur eine Zeile) vorbelegt werden. Ich meine aber, dass du dir das so oder so schenken kannst.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
also wenn ich die Datein einzeln durchlaufen lassen, dann funktioniert der Rmssd. Und ich bekomme ein Zeilenvektor über die Spaltenlänge (1x11) und das Ergebnis möchte ich in meiner Schleife mit dem automatischen einlesen meiner 198 Datein dann in eine Matrix speichern. Hier nochmal mein bisheriges Programm.
Rmssd(k,:) = zeros(1, size(M,2)); % ich dachte das geht hier auch mit ( k,: ) aber ich
%bekomme ab der 3 zeile nur noch Nullen
%und wenn ich die Datein einzeln einlese bekomme ich ein Ergebnis
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.