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

Dateiabfrage und Ausgabe

 

HF-SCF
Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 04.05.09
Wohnort: ---
Version: R2009a
     Beitrag Verfasst am: 23.06.2009, 15:04     Titel: Dateiabfrage und Ausgabe
  Antworten mit Zitat      
Hi zusammen,


hab folgendes Problem. Ich hab ein Outputfile folgender Formatierung.

Es sind ne Menge Zeilen und 7 Spalten

Ausschnitt:

Code:

1.397e+001 1.308e+000 1.000e+000 1.000e+000 3.000e+000 18 0
1.550e+004 1.000e+000 1.000e+000 1.000e+000 3.000e+000 19 0
4.918e+000 2.021e+000 1.000e+000 1.000e+000 3.000e+000 20 0
7.898e+000 1.580e+000 1.000e+000 1.000e+000 3.000e+000 21 0
1.303e+009 1.000e+000 1.000e+000 1.000e+000 3.000e+000 22 0
 


Nun, da das ziemlich viele Eingaben in dem file sind, möchte ich bestimmte Werte abfragen, die Randbedingungen bzw. innerhalb eines intervalls liegen müssen.
Wie das Intervall definiert wird, ist kein Problem.
Dazu möchte ich die ersten 3 Werte einer Zeile mit den Randwerten vergleichen und falls alle drei Werte innerhalb des Intervalls liegen sollen die Werte 6 und 7 in dieser Zeile in der Konsole von Matlab ausgegeben werden. Aber bisher gibt er mir nur Mist aus, vielleicht kann ja mal einer drüber schauen, wo das Problem liegt? Danke

Gruß
HF

Code:

function back = D4hpick( prompt )

% Eingabewerte abfragen
AbfrageA1g = input( 'Welchen Wert hat A1g? \n');
AbfrageB1g = input( 'Welchen Wert hat B1g? \n');
AbfrageB2g = input( 'Welchen Wert hat B2g? \n');
toleranz = input( 'Wie groß soll die Toleranz sein (in %)? \n');
%Toleranzfaktor bestimmen
toleranzfaktor = toleranz*0.01;
%Intervallgrenzwerte generieren
A1gh = AbfrageA1g + AbfrageA1g*toleranzfaktor;
A1gl = AbfrageA1g - AbfrageA1g*toleranzfaktor;
B1gh = AbfrageB1g + AbfrageB1g*toleranzfaktor;
B1gl = AbfrageB1g - AbfrageB1g*toleranzfaktor;
B2gh = AbfrageB2g + AbfrageB2g*toleranzfaktor;
B2gl = AbfrageB2g - AbfrageB2g*toleranzfaktor;
%Dateiname einlesen
filename = 'D4hintensities.txt';
%Prüfen ob die Datei existiert
fid = fopen( filename, 'r');
if (fid < 0)
    fprintf( 'Datei %s nicht lesbar oder nicht vorhanden! \n', filename);
    return;
end
% Hier passiert folgendes: Die ganze Datei wird durchsucht nach Werten, die
% zu den eingebenen innerhalb der Toleranzgrenze passen müssen. Dazu müssen
% 3 Kriterien erfüllt sein. In der Zeile muss der erste Wert mit dem
% Intervall für A1g übereinstimmen, der zweite Wert für das Intervall B1g
% und der dritte Wert mit dem Intervall für B2g. Liegen diese Werte in dem
% Werteintervall, sollen die Werte 6 und 7 aus dieser Zeile ausgeben werden
lesen = 1;
while ( lesen )
   zeile = fgetl( fid );
   if (( A1gl < zeile(1) < A1gh ) && ( B1gl < zeile(2) < B1gh ) && ( B2gl < zeile(3) < B2gh ))
       back = fprintf (' Winkel(x) = %g , Winkel(y) = %g \n', [zeile(6),zeile(7)]);
   elseif (zeile == -1)
       lesen = 0;
       back = fprintf(' Keine Übereinstimmungen gefunden!\n');        
   end    
end

fclose( fid );
 
Private Nachricht senden Benutzer-Profile anzeigen


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 23.06.2009, 15:12     Titel:
  Antworten mit Zitat      
Moin,

ich denke die If-Bedingung ist falsch formuliert. Du kannst keine Verkettung machen soweit ich weiß. D.h. du musst jede Bedingung mit && verknüpfen:
Code:
if A1gl < zeile(1) && zeile(1) < A1gh  && B1gl < zeile(2) && zeile(2) < B1gh && B2gl < zeile(3) && zeile(3) < B2gh
       back = fprintf (' Winkel(x) = %g , Winkel(y) = %g \n', [zeile(6),zeile(7)]);


Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
HF-SCF
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 04.05.09
Wohnort: ---
Version: R2009a
     Beitrag Verfasst am: 23.06.2009, 16:13     Titel:
  Antworten mit Zitat      
Hi Alex,


danke erstmal.

Er gibt als Ausgabewert immer werte x = 101 und y = 43 aus, wobei x nie den Wert 101 haben kann (läuft von 0 bis 90, y ebenso).

Außerdem mag er deine if Anweisung wohl nicht *g*, zumindest bringt er nen Fehler.

Stimmt die Zeilen- und Wertabfrage überhaupt?


Gruß
HF
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 23.06.2009, 20:15     Titel:
  Antworten mit Zitat      
Moin,

lass dir mal den Wert von "Zeile" ausgeben. Ich weiß nicht genau, aber kann es sein, dass es ein String ist? Wenn ja, dann musst du ihn noch mittels "str2double" umwandeln um ihn in der if-Abfrage vergleichen zu können.

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
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 - 2024 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.