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

Liste mit Variablen einlesen

 

longdon
Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 03.03.12
Wohnort: An der Ostsee
Version: ---
     Beitrag Verfasst am: 03.03.2012, 19:32     Titel: Liste mit Variablen einlesen
  Antworten mit Zitat      
hallo,
ich studiere e-technik und arbeite grade an meiner bachelorarbeit. das thema ist erzeugung eines virtuellen prototyps für e fahrzeuge unter simulink. bin schon ein ganzes stück weit und habe schon einiges geschafft. eine sache macht es mir im moment jedoch schwer. ich möchte zu dem programm eine TXT datei anlegen die in etwa so aussieht:

Af in m2: 1.5
Cr : 0.3
Cw : 0.8
r in cm : 40

.
.
.

es sollen also daten für das fahrzeug hauptsächlich die physik übergegeben werden und zwar in einer txt datei. der sinn dahinter ist das später jemand der absolut keine ahnung hat von simulink oder programmieren diese txt datei öffnet und einfach nu die werte ändert. das programm sollte dann alle geänderten werte bei durchlauf selber wieder einlesen und entsprechende ergebnisse ausgeben. meine frage bezieht sich hierbei darauf. wie stelle ich die daten in der TXT datei am besten dar Exclamation Question also muss ich die mit gewissen abständen trennen etc. oder kann ich das so machen wie beschrieben??

wie kann ich in matlab am einfachsten den code generieren das die datei eingelesen wird und mir dann als variablen unter simulink im entsprechenden from workspace block vorliegt Question

wenn mir jemand helfen würde wäre ich echt dankbar Laughing
bin neu hier im forum daher weiss ich nicht ob es die frage schon gibt, falls ja tut es mir leid. kleinschreibung und fehlende kommas verzeihen, alter chatter Rolling Eyes
beste grüße longdon
_________________

Treffen sich ne Null und ne Acht. Sagt die Null:"Schicker Gürtel Wink"
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.03.2012, 23:46     Titel:
  Antworten mit Zitat      
Hallo,

du kannst z.B. Code dieser Form verwenden, um die Parameter nach MATLAB zu importieren.

Code:
fid = fopen('test.txt');
p = textscan('%*s %f', 'delimiter', ':', 'CollectOutput', true);
fclose(fid)


Ich persönlich fände es ja schöner, wenn man die Parameter in einer GUI eingeben kann Wink

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
longdon
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 03.03.12
Wohnort: An der Ostsee
Version: ---
     Beitrag Verfasst am: 04.03.2012, 09:44     Titel:
  Antworten mit Zitat      
finde es sehr schön das du mir geantwortet hast. leider bin ich programmiertechnisch nicht grade der meister vom fach. kannst du mir die zeilen mal einzelnd erläutern was da passiert. will das nicht nur reinkopieren! und weiss das programm intern dann schon das die einzelnen variablen af cr und so weiter heissen oder wie funktioniert das? danke für deine hilfe!!!
_________________

Treffen sich ne Null und ne Acht. Sagt die Null:"Schicker Gürtel Wink"
Private Nachricht senden Benutzer-Profile anzeigen
 
longdon
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 03.03.12
Wohnort: An der Ostsee
Version: ---
     Beitrag Verfasst am: 04.03.2012, 09:51     Titel:
  Antworten mit Zitat      
fid = fopen('fahrzeugdaten.txt');
p = textscan('%*s %f', 'delimiter', ':', 'CollectOutput', true);
fclose(fid)

Error using textscan
Param/value pairs must come in pairs.



das zeigt er mir dann an? also zu funktionieren scheint es noch nicht..
_________________

Treffen sich ne Null und ne Acht. Sagt die Null:"Schicker Gürtel Wink"
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.03.2012, 10:17     Titel:
  Antworten mit Zitat      
Hallo,

was die Zeilen machen, könntest du auch herausfinden, indem du die Befehle in der Doku nachschlägst.

1. Datei öffnen
2. In Datei lesen (Muster: String überspringen, Double einlesen; Trennzeichen : ). Die Variablen werden in einem Vektor p gesammelt. Man könnte es auch so machen, dass du eine Struktur bekommst, deren Felder die Variablennamen sind. Das ist aber schwieriger, da MATLAB ja nicht wissen kann, was in deiner Textdatei nun Variablenname und was Einheit ist - vor allem, da du mal eine Einheit hast und mal nicht.
3. Datei schließen.

Ich hatte das hingeschrieben, ohne es wirklich in MATLAB auszuprobieren. Ein Blick in die Doku hätte auch hier geholfen. So sollte es definitiv gehen:
Code:
fid = fopen('test.dat');
p = cell2mat(textscan(fid, '%*s %f', 'delimiter', ':'));
fclose(fid);


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
longdon
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 03.03.12
Wohnort: An der Ostsee
Version: ---
     Beitrag Verfasst am: 04.03.2012, 10:55     Titel:
  Antworten mit Zitat      
hm nein es geht immer noch nicht

fid = fopen('fahrzeugdaten.txt');
p = cell2mat(textscan(fid, '%*s %f', 'delimiter', ':'));
fclose(fid);

habe ich eingegeben und dann enter gedrückt.. daraufhin zeigt er mir an.

Error using textscan
Invalid file identifier. Use fopen to generate a valid file identifier.

ich habe meinen stuff bis jetzt in simulink erledigt daher stehe ich hier ganz schön auf dem schlauch.. du meintest doch, dass das so gehe muss. warum funktioniert das denn bei mir nicht Sad
_________________

Treffen sich ne Null und ne Acht. Sagt die Null:"Schicker Gürtel Wink"
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.03.2012, 11:00     Titel:
  Antworten mit Zitat      
Hallo,

das bedeutet wahrscheinlich, dass irgendwas mit der Datei nicht stimmt. Ist die Datei im selben Verzeichnis? wenn nicht, solltest du den gesamten Pfad angeben.

Du solltest solche Programme auch immer in den Editor schreiben und von dort ausführen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
longdon
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 03.03.12
Wohnort: An der Ostsee
Version: ---
     Beitrag Verfasst am: 04.03.2012, 11:04     Titel:
  Antworten mit Zitat      
also die datei liegt auf dem desktop
wo muss ich die denn hinlegen? dachte das wäre egal wo die liegt..
den code habe ich im command window eingegeben und mit enter bestätigt..
ist das die ursache?
_________________

Treffen sich ne Null und ne Acht. Sagt die Null:"Schicker Gürtel Wink"
Private Nachricht senden Benutzer-Profile anzeigen
 
longdon
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 03.03.12
Wohnort: An der Ostsee
Version: ---
     Beitrag Verfasst am: 04.03.2012, 11:07     Titel:
  Antworten mit Zitat      
das "Programm" ist leer. also ich habe bis dato keinerlei code in matlab. das gesammte programm soll unter simulink laufen. dies dient nur dazu das matlab hilft die dateien für simulink einzulesen damit ich später mit" from workspace" darauf zurückgreifen kann
_________________

Treffen sich ne Null und ne Acht. Sagt die Null:"Schicker Gürtel Wink"
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.03.2012, 11:20     Titel:
  Antworten mit Zitat      
Hallo,

die Datei muss im momentanen Verzeichnis oder im MATLAB-Suchpfad liegen, oder du musst (wie gesagt) den kompletten Pfad angeben.

Letztlich kannst du den Code ja in eine Callback-Function des Modells schreiben, aber zum Testen ist das ja weniger geeignet.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
longdon
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 03.03.12
Wohnort: An der Ostsee
Version: ---
     Beitrag Verfasst am: 04.03.2012, 11:29     Titel:
  Antworten mit Zitat      
hallo,

also je mehr du schreibst um so verwirrter bin ich :/ kenne mich nicht so gut aus um dir richtig folgen zu können.. das muss doch ganz einfach gehen? oder nicht? den suchpfad gebe ich einfach links unter current folder an oder?
_________________

Treffen sich ne Null und ne Acht. Sagt die Null:"Schicker Gürtel Wink"
Private Nachricht senden Benutzer-Profile anzeigen
 
longdon
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 03.03.12
Wohnort: An der Ostsee
Version: ---
     Beitrag Verfasst am: 04.03.2012, 11:33     Titel:
  Antworten mit Zitat      
also jetzt gibt er keinen fehler mehr aus
habe das verzeichnniss auf desktop geändert und er liest die datei jetzt ein...
zeigt mir dann unter workspace aber ANS FID und P an und alle drei variablen enthalten nix sinnvolles.. scheint also noch nicht zu funktionieren Sad
_________________

Treffen sich ne Null und ne Acht. Sagt die Null:"Schicker Gürtel Wink"
Private Nachricht senden Benutzer-Profile anzeigen
 
longdon
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 03.03.12
Wohnort: An der Ostsee
Version: ---
     Beitrag Verfasst am: 04.03.2012, 11:37     Titel:
  Antworten mit Zitat      
bingo bongo es geht Very Happy
HURRA Smile bloß wundern tut mich das ich jetzt drei variablen habe statt einer?
das ist merkwürdig. auf jeden fall hat die datei P jetzt ein array mit den daten die für mich wichtig sind..

ohne deine hilfe wäre ich hier echt aufgeschmissen Smile
VIELEN DANK Smile
_________________

Treffen sich ne Null und ne Acht. Sagt die Null:"Schicker Gürtel Wink"
Private Nachricht senden Benutzer-Profile anzeigen
 
longdon
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 30
Anmeldedatum: 03.03.12
Wohnort: An der Ostsee
Version: ---
     Beitrag Verfasst am: 04.03.2012, 11:44     Titel:
  Antworten mit Zitat      
wieso habe ich jetzt drei variablen??

sag mal chef Smile wenn ich jetzt mit dem from workspace arbeite, dann läuft das doch so ab das ich einfach mein from workspace block eine variable gebe. einlesen tuhe ich die dann mit zum beispiel input1 = [ Cr ]; oder ? soweit habe ich mich durch das tutorial durchgelesen. jetzt muss ich aber nur noch die datei aus der fahrzeugdatendatei auslesen und seperat speichern oder kann ich gegebenfalls auch mit der input1 = [ ........ ] exakt den wert aus der bereits eingelesenen datei rausnehmen, ihm beispielstweise angeben das input1 = .... dritte datei aus der TXT ist..

wenn du mri da noch helfen könntest wäre das echt nice Smile
_________________

Treffen sich ne Null und ne Acht. Sagt die Null:"Schicker Gürtel Wink"
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.03.2012, 11:57     Titel:
  Antworten mit Zitat      
Hallo,

mir persönlich wäre es lieber, mit Constant-Blöcken zu arbeiten. Da kannst du direkt eingeben, mit was du arbeiten willst, also z.B. p(3), wenn es der dritte Parameter ist.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.