|
|
Variablen automatisch erzeugen ?!? |
|
Pete |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 22.11.2007, 09:49
Titel: Variablen automatisch erzeugen ?!?
|
|
Hallo...
Muss für ein Projekt in der Hochschule einige Sachen in Matlab schreiben und kenne mich noch nicht so gut aus.
Ich brauche mehrere Variablen die von einer Schleife automatisch erzeugt werden. Kenne das aus C, habe aber in der Matlab-Hilfe noch nix darüber gefunden.
Es soll ungefähr so aussehen: Variablen x1...x7
for i=1:7
x(i)=...
end
habe schon (i),[i], ausprobiert und es hat nicht funktioniert.
kann mir da wer weiterhelfen?
Danke im Voraus
|
|
|
|
|
outsider |
Forum-Meister
|
|
Beiträge: 806
|
|
|
|
Anmeldedatum: 03.09.07
|
|
|
|
Wohnort: München
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 22.11.2007, 10:39
Titel:
|
|
Schaue nach den Funktionen EVAL, EVALIN, ASSIGNIN
MfG
|
|
|
Pete |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 22.11.2007, 10:59
Titel:
|
|
ahh ok...
aber wie kann ich das in der gui einbinden?
Habe folgendes:
for k=1:7
handles.cfun = fit(handles.x2,handles.y(:,k),'poly2');
plot(handles.cfun, 'g')
end
was er auch macht aber er überschreibt eben bei jedem schleifendurchgang das handles.cfun ... ich brauch jetzt handles.cfun1...handles.cfun7.
|
|
|
outsider |
Forum-Meister
|
|
Beiträge: 806
|
|
|
|
Anmeldedatum: 03.09.07
|
|
|
|
Wohnort: München
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 22.11.2007, 11:42
Titel:
|
|
wenn Du einen Struct erweitern willst, dann geht es viel einfacher mit SETFIELD.
MfG
|
|
|
Pete |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 22.11.2007, 11:53
Titel:
|
|
Mensch hier gibts aber schnelle Antworten noch eine letzte Frage... wie plotte ich das dann? innerhalb der schleife ohne plot (c1)... plot(c2)... schreiben zu müssen
habe das mit
plot(eval('x%d',i),y)
versucht, bringt folgende fehlermeldung:
??? Error using ==> plot
Conversion to double from struct is not possible.
|
|
|
outsider |
Forum-Meister
|
|
Beiträge: 806
|
|
|
|
Anmeldedatum: 03.09.07
|
|
|
|
Wohnort: München
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 22.11.2007, 13:01
Titel:
|
|
damit kannst Du die Felder plotten
die 2 Zeile selectiert nur die Namen, die mit "c" anfangen, da ja nicht alle Elemente der Handlesstruktur plottbar sind...
MfG
P.S. trotz der Tatsache, dass es so funzt, ist diese Lösung weder schön und gut, noch robust und elegant... Aber Du musst es wissen... Ich hätte lieber nur eine einzige Variable angelegt die alle Werte als Array umfasst. Falls die jeweiligen Vektoren unterschiedlich lang sind, dann sollten die CellArrays zum Einsatz kommen. So oder So würde man dann die FOR-Schleifen loswerden und der Code ist übersichtlicher und kleiner...
|
|
|
Pete |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 23.11.2007, 10:34
Titel:
|
|
Ja das ist nicht "elegant" ... aber ich versteh nicht ganz wie ich das besser machen kann... ich schilder mal genau was ich machen will.
Also ich hab eine GUI wo ich per Knopfdruck Daten fiten möchte.
Ich habe eine 7x7 Matrix handles.y und eine handles.x2 als Spaltenvektor.
Es soll also jeweils eine Spalte der Matrix mit x2 gefittet werden.
Ich brauche 7 Kurven die ich dann weiterverwenden möchte (ausgeben und speichern).
Und Problem 2:
habe diese 7x7 matrix aus einem spaltenvektor mit 49 Werten über 2 ineinander verschachtelten for-schleifen erzeugt. Da ich mitlerweile überall gelesen habe das das nicht "die feine Art" ist, möchte ich wissen ob das einfacher geht. Das soll aber einmal eine matrix sein die die 1ten 7 Werte in die 1ste Spalte dann nächsten 7 Werte in die 2te Spalte ... schreibt.
Die 2te Matrix soll aber so aussehen: 1,7,14,..., Wert ind die 1te Spalte dann 2,8,15,..., Wert in die 2te Spalte.
Hatte das bisher so gelöst *schäm*
|
|
|
Pete |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 25.11.2007, 20:30
Titel:
|
|
Problem 2 habe ich jetzt mal so gelöst... (for-Schleife zwar weg aber "schön" finde ich das trotzdem nicht).
|
|
|
outsider |
Forum-Meister
|
|
Beiträge: 806
|
|
|
|
Anmeldedatum: 03.09.07
|
|
|
|
Wohnort: München
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 26.11.2007, 23:33
Titel:
|
|
Hier ist eine elegante Alternative zu den verschachtelten Schleifen.
evtl. musst Du bissl anpassen.
MfG
P.S. Man darf nicht unter MATLAB 1x dimensional denken als wenn Du in C programmierst ... MATLAB erlaubt ein N-dimensionales Denken - auch als Vektorization gennant. Wenn man das anwendet kriegt man nicht nur (fast) alle Schleifen aus dem Code weg, sondern bekommt auch einen besseren und verständlicheren und vor allem viel schnelleren Code.
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|