Verfasst am: 12.12.2011, 18:04
Titel: m-file erstellen und schreiben
Hallo Zusammen,
ich brauche eure Hilfe!.
Ich möchte einen m-file erstellen, wo ich Messdaten(als Matrix) initializieren kann. Ich habe es versucht mit: fprintf() aber ich bekomme immer wieder das Problem, dass der initizializierte Wert alle Index folgen Werte annimmt.
ich möchte sowas haben:
Force =
[1 n
2 n-1
3 .
. .
. .
. .
n 1]
Dafür habe ich im Workspace der parameter Force mit der Größe 200*2(entspricht 200 Zeilen und 2 Spalten).
erst mal danke schön über die schnelle Antwort. Ich glaube, daß ihr micht falsch verstanden habt.
Die Matrix Force existiert schon bei mir als 200*2 mit Werten.
Nun möchte ich diese Matrix, die ich schon aus einer txt Datei ausgelesen habe, in einer m-file Datei schreiben.
D.h ich soll erstmal eine m-file erstellen. Das ist mein Einsatz bis jetzt:
Daten werden üblicherweise in eine MAT Datei oder eine ASCII Datei geschrieben, siehe SAVE Kommando. Welche Grund könnte es geben Daten in eine MATLAB Code Datei zu schreiben?
Das ist ein Cell String. Ein String wäre ein CHAR Vektor.
Zitat:
und mit for und if möchte ich die einzelnen Parametern inizializieren.
Welche Parameter denn? KK ist eine Liste aus Strings, mit Parameter meinst Du aber wahrscheinlich Variablen.
"KK{i}=0" ersetzt den String in der i.ten Cell mit der Zahl 0.
Ich bitte Dich, statt "es funktioniert nicht" eine Beschreibung des Problems zu posten. Je genauer Du Dein Problem beschreibst, desto leichter fällt es zu antworten. Mit "funktioniert nicht" müssen wir zunächst Raten, was Dein Programm leisten soll und zweitens erforschen, was stattdessen passiert.
Wenn Du die Variablen initialisieren möchtest, deren Namen im Cell-String gespeichert sind: Das ist eine fehleranfällige Meta-Programmier-Methode. Es geht zwar, erzeugt aber immer wieder Schwierigkeiten und bremst Matlab sehr aus. Ein ordentlicher Ansatz könnte dies sein:
Ich lese 2 Spalten aus einem excel sheet und dann ich untersuche, in welchem Index die ausgelesenen Daten sich befinden somit kann ich auf den Werten über Indexen zugreifen. Aber diese Werten möchte ich auf die oben gennante Variabeln zuweisen.
Hier ist mein Einsatz:
Code:
K = {a b c d e f g h I G k l m }; % ausgelesene Daten
KK ={m_us_f m_us_r Ixx Iyy Izz mz mx my Cx Ax Cy Ay}% Variabeln
yy = 0; % ist eine Hilfe für Untersuchung ob ein Parameter vorhanden ist
Dies überschreibt nun den Wert, der im i.ten Element des Cell-Arrays gespeichert ist. Ist dies Dein Ziel? Oder möchtest Du der entsprechenden Variablen einen Wert zuweisen? Im letzteren Fall: Das funktioniert nicht.
Ich habe den Eindruck, Du verwechselst Variablen und ihre Werte.
Wie gesagt: Das funktioniert nicht.
Wenn Du KK so wie oben definiert hast, enthält es nur noch die Werte der Variablen. Man kann so aber nicht auf die Variablen selbst zugreifen.
Was Du vorhast ist ein Programmier-Modell, bei dem das Programm rekursiv auf seinen eigenen Source-Code zugreift. Sowas ist zwar möglich, aber sehr anspruchsvoll. Matlab ist dafür nicht besonders geeignet, ich würde eher LISP dafür wählen. Nützlich ist das, wenn man etwas mit künstlicher Intelligenz brauchst, z.B. Spracherkennung.
Wenn Du Programmieranfänger bist, rate ich auf jeden Fall davon ab. Initialisiere die Variablen ganz explizit mit "m_us_f = 0". Komplizierte Programmiertechniken machen ein Programm nicht schlauer, sondern sie machen hauptsächlich das Finden von Fehlern unmöglich.
Zitat: 'Wenn Du KK so wie oben definiert hast, enthält es nur noch die Werte der Variablen. Man kann so aber nicht auf die Variablen selbst zugreifen'.
Ja stimmt das ist das Problem, was ich gemeint habe, daß es noch nicht funktioniert.
Gibt es eine andere Möglichkeit die Variabeln so zu inizialisieren?.
in dem alle internen Namen definiert sind und mit den gegebenen Werten
gefüllt, oder eben leer, falls das entsprechende Schlüssel-Wert-Paar nicht
exisitiert. Jetzt kann im weiteren Programm auf diese struct
zugegriffen werden, ohne jedesmal eine Existenzabfrage machen zu müssen.
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.