WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Erstellen einer Schleife

 

bage86
Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 06.11.13
Wohnort: ---
Version: R2013a Student
     Beitrag Verfasst am: 02.12.2013, 14:56     Titel: Erstellen einer Schleife
  Antworten mit Zitat      
Hallo zusammen

Ich benötige Hilfe bei dem erstellen einer Schleife. ich habe folgendes Skript geschrieben:

Code:
M=dlmread('D:\HL\01Basel.csv',',');
MTiefg=(M(:,4)+M(:,5))/2;
WSpeed=M(:,1);
ShaftP=M(:,2);
Wind=M(:,3);
Trim=(M(:,4)-M(:,5));
Mx=[WSpeed,MTiefg,Trim,ShaftP,Wind];
bed = (MTiefg<7 | MTiefg>16) | (Trim<-3 | Trim>3) | WSpeed <= 10 | (ShaftP < 5000 | ShaftP > 50000)| Wind>=12;
Mx(bed,:)=[];
Input=Mx(:,1:3);
Output=Mx(:,4);


Jetzt liegen mir aber mehrere csv Datensätze vor 01Basel bis 08Basel die ich gerne einlesen und zusammenfassen möchte. Meine Idee war es irgendwie eine Schleife mit einem Counter zu bauen der den Namen des Pfades dann hochzählt also 01,02,03 usw aber das hat nicht geklappt und ich möchte am Ende ja auch nur eine Matrix erhalten wo alle datensätze enthalten sind....

Ich hoffe jmd kann mir helfen.

Gruß Bastian
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 02.12.2013, 15:01     Titel:
  Antworten mit Zitat      
Code:

for k=1:8
M=dlmread(['D:\HL\0',num2str(k),'Basel.csv'],',');
MTiefg{k}=(M(:,4)+M(:,5))/2;
WSpeed{k}=M(:,1);
ShaftP{k}=M(:,2);
Wind{k}=M(:,3);
Trim{k}=(M(:,4)-M(:,5));
Mx{k}=[WSpeed,MTiefg,Trim,ShaftP,Wind];
bed{k} = (MTiefg<7 | MTiefg>16) | (Trim<-3 | Trim>3) | WSpeed <= 10 | (ShaftP < 5000 | ShaftP > 50000)| Wind>=12;
Mx{k}(bed,:)=[];
Input{k}=Mx{k}(:,1:3);
Output{k}=Mx{k}(:,4);
end

kann das ja nicht testen aber so ungefähr
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
bage86
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 06.11.13
Wohnort: ---
Version: R2013a Student
     Beitrag Verfasst am: 02.12.2013, 15:22     Titel:
  Antworten mit Zitat      
mit ein paar {k} mehr hat es soweit funktioniert.

Code:
format short g
for k=1:8
 M=dlmread(['D:\HL\0',num2str(k),'Basel.csv'],',');
 MTiefg{k}=(M(:,4)+M(:,5))/2;
 WSpeed{k}=M(:,1);
 ShaftP{k}=M(:,2);
 Wind{k}=M(:,3);
 Trim{k}=(M(:,4)-M(:,5));
 Mx{k}=[WSpeed{k},MTiefg{k},Trim{k},ShaftP{k},Wind{k}];
 bed{k} = (MTiefg{k}<7 | MTiefg{k}>16) | (Trim{k}<-3 | Trim{k}>3) | WSpeed{k} <= 10 | (ShaftP{k} < 5000 | ShaftP{k} > 50000)| Wind{k}>=12;
 Mx{k}(bed{k},:)=[];
Input{k}=Mx{k}(:,1:3);
 Output{k}=Mx{k}(:,4);
end
 


aber das Ergebnis für Input und Output ist noch nicht das erwartete. Ich erhalte:

Code:
Input =

  Columns 1 through 6

    [7079x3 double]    [15213x3 double]    [6188x3 double]    [17876x3 double]    [11590x3 double]    [5392x3 double]

  Columns 7 through 8

    [5352x3 double]    [8064x3 double]


Erwarte aber eigentlich für Input eine n*3 Matrix mit den entsprechenden Datenreihen...
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 02.12.2013, 16:25     Titel:
  Antworten mit Zitat      
Zitat:
Erwarte aber eigentlich für Input eine n*3 Matrix mit den entsprechenden Datenreihen...

hast du doch. 8 mal. für jede datei eine nx3 matrix
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
bage86
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 06.11.13
Wohnort: ---
Version: R2013a Student
     Beitrag Verfasst am: 02.12.2013, 16:44     Titel:
  Antworten mit Zitat      
ja genau, da habe ich mich vllt falsch ausgedrückt. was ich als ergebnis brauche ist eine einzige lange 3*n matrix in der diese acht matrizen quasi aneinandergereiht sind.

Dabei ist es egal ob diese aneinanderreihung der einzelnen matrizen erst am ende passiert (für input und output) oder bereits an der stelle Mx=.... also vor der weiteren Filterung.

Wichtig ist nur dass es am Ende eine einzige 3xn Matrix für Input und einen Vektor mit der Länge n für Output gibt.
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 02.12.2013, 16:52     Titel:
  Antworten mit Zitat      
du solltest vieleicht das getting startet von matlab nochmal lesen ^^ das von dir geschilderte problem gehört zu den grundlagen von matlab.
ich habe dir bereits gezeigt wie du die daten mittels schleife verarbeitest. anstadt jetzt in jedem durchgang einen neuen cell eintrag zu erstellen solltest du einfach deine neuen daten an die alten anhängen.
Code:
in=[];
for k=1:8
    x=rand(3);
    in=[in;x];
end

_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
bage86
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 06.11.13
Wohnort: ---
Version: R2013a Student
     Beitrag Verfasst am: 02.12.2013, 19:04     Titel:
  Antworten mit Zitat      
ich bin in der Tat erst seit wenigen Wochen dabei mich mit MatLab zu beschäftigen und habe auch sonst keine weiteren Programmierkenntnisse deshalb fällt es mir manchmal schwer die Grundlagen aus den Tutorials in der Praxis umzusetzen.

Vielen Dank für deine Antworten jetzt hab ich alles hinbekommen und mir den Teil im getting started nochmal angeschaut, hoffe beim nächsten Mal klappt es dann gleich.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.