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

Problem bei mehrfacher Verwendung von "headerlines"

 

jojo1848

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.03.2011, 10:35     Titel:
  Antworten mit Zitat      
Hallo Jan!

Dankeschön für deine Hilfe!

jetzt ließt er die 1. Zeile ein aber leider nicht Zeile 3 usw. Prinzipiell soll das Programm beim einlesen der Zahlenwerte in Zeile 3 beginnen und dann alle 4 Zeilen weitermachen, d.h. die zahlenwerte befinden sich in den Zeilen 3, 7, 11, 15 usw.

Mfg Jojo


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 03.03.2011, 00:16     Titel:
  Antworten mit Zitat      
Hallo jojo1848,

Zitat:
jetzt ließt er die 1. Zeile ein aber leider nicht Zeile 3 usw.

Was bedeutet das? Was macht das Programm denn? Wieso liest es Zeile 1 ein? Welches ist genau Zeile 1? Es müsste soweit ich das sehe eine Leerzeile überspringen und dann immer 3 Zeilen einlesen.

Bitte teste das Programm nochmal mit dem Debugger, indem Du Zeile für Zeile den Code durchlaufen läßt und beseitige die wohl noch vorhandenen Fehler.

Viel Erfolg, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
jojo1848

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.03.2011, 08:25     Titel:
  Antworten mit Zitat      
Hallo Jan!

Die Textdatei hat folgende Struktur:

Zeile1: Dichte
Zeile2: [rho]
Zeile3: 1002
Zeile4:
Zeile5: Länge
Zeile6: [m]
Zeile7: 100
Zeile8:
Zeile9: Breite
zeile10: [m]
Zeile11: 12

In das Programm gehen aber nur die Zahlenwerte ein. Sprich die Zeilen 3, 7, 11, usw.

Die Zeilen mit Dichte, [rho] usw. haben für das Programm keinerlei Relevanz.

ich hoffe du weißt jetzt was ich meine.

Mfg Jojo
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 03.03.2011, 14:12     Titel:
  Antworten mit Zitat      
Hallo jojo1848,

Ja, die Datei-Struktur hatte ich soweit schon verstanden. Aber wieso sagst Du, dass das Programm nur Zeile 1 einliest?
Eigentlich sollte es alle Zeilen einlesen und die Werte sind hinterher per "[Konstanten.Wert]" als Vektor verfügbar. Du liest nun zwar auch die Namen und Einheiten ein, obwohl Du sie nicht brauchst. Aber den Teil kannst Du aus dem Programm ja auch selbst entfernen, oder?

Was genau läuft jetzt eigentlich nicht?

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
jojo1848

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.03.2011, 08:37     Titel:
  Antworten mit Zitat      
Hallo Jan!

Also mein Code sieht momentan folgendermaßen aus:

Code:

fid = fopen('Schiffsparameter_Matrizen2.txt', 'r'); % Datei zum lesen öffnen
Konstanten = []; % Variable für struct anlegen  % EDITED

while 1 %Endlosschleife    
    tline = fgetl(fid); % nächste Zeile einlesen
    if ~ischar(tline),   break,   end % Wenn Dateiende erreicht -> beende Schleife

    tline = deblank(tline)
    if ~isempty(tline)
        sep = find(isspace(tline));
        index = length(Konstanten)+1; %index für neuen Datensatz
        Konstanten(index).Name = tline(1:sep - 1);
        Konstanten(index).Kurz = tline(sep + 1:end);
        Konstanten(index).Einheit = fgetl(fid);
        Konstanten(index).Wert = fgetl(fid);
    end
end
fclose(fid);

T = [Konstanten(1).Wert]
L = [Konstanten(2).Wert]
m = [Konstanten(3).Wert]
rho = [Konstanten(4).Wert]
xG_dim = [Konstanten(5).Wert]
CB = [Konstanten(6).Wert]
B = [Konstanten(7).Wert]

% Berechnung der Konstanten
xG    = xG_dim/L;
 


und der Fehler dazu lautet:

??? Error using ==> /
Matrix dimensions must agree.

Error in ==> D:\User\Praktikant\Wellner\Aufgabe-POD\HydKoeff_Shallow_W_pod\BSP3.m
On line 44 ==> xG = xG_dim/L;

MfG Jojo
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 04.03.2011, 12:04     Titel:
  Antworten mit Zitat      
Hallo jojo,

Hast Du Dir das Einlesen mal genau angeschaut?
Dies liest eine Zeile als String ein:
Code:
Konstanten(index).Wert = fgetl(fid);

Du möchtest aber wahrscheinlich eine Zahl bekommen, oder? Dann also:
Code:
Konstanten(index).Wert = fscanf(fid, '%g', 1);

Wir posten hier zwar Lösungsansätze, debuggen muss dann aber doch jeder Programmierer selbst.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
jojo1848

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.03.2011, 12:10     Titel:
  Antworten mit Zitat      
Hallo Jan & Peter!

Das Programm funktioniert jetzt! Dafür vieln Dank an euch zwei!

MfG Jojo
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 04.03.2011, 13:25     Titel:
  Antworten mit Zitat      
@jojo1848

Noch eine Anmerkung, Bitte für den Code unbedingt Code-Umgebung benutzen. Danke!
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite Zurück  1, 2

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.