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

pro Schleifendurchlauf Variable&Text in Variable speiche

 

TI300

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.10.2010, 17:11     Titel: pro Schleifendurchlauf Variable&Text in Variable speiche
  Antworten mit Zitat      
Hallo zusammen!
Ich bin auch absoluter Matlab-Neuling, aber ziemlich begeistert was man damit alles anstellen kann. Jetzt experimentiere ich gerade ein bisschen herum und habe ein Programm zur Zufallsberechnung eigentlich fast schon fertig. Bei Folgendem scheitere ich aber gerade:

Code:

a=('plot(',i,',',p,'*',');hold;');
b=[b a];
 


Diese Zeile ist am Ende einer Schleife und soll 1. den "plot"-Ausdruck mit der Laufvariablen i und der Variablen p, mit der ich vorhin etwas berechnet habe, kombinieren. 2. Soll die variable a, die sich ja mit jedem Durchlauf ändert, in die Variable b geschrieben werden, damit ich hinterher praktisch alles fertig für den plot in b gespeichert habe.

Egal wie ich die Ausdrücke trenne, es kommt immer ein Fehler zurück... bin für jeden Tipp dankbar![/b][/code]


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 04.10.2010, 13:41     Titel: Re: pro Schleifendurchlauf Variable&Text in Variable spe
  Antworten mit Zitat      
Hallo TI300,

Zitat:
Code:

a=('plot(',i,',',p,'*',');hold;');
b=[b a];
 

Was soll dieses Programm denn produzieren? Möchtest Du wirklich ein Programm schreiben, dass ein Programm schreibt? Ganz schön trickreich für einen Matlab-Beginner...

Möchtest Du das Ganze hinterher etwa per EVAL ausführen lassen? Falls ja: mach das nicht. Damit handelt man sich eine Menge Probleme ein - das Forum wimmelt nur so davon!
Es ist viel besser, schneller und klarer, wenn Du einfach die PLOT-Kommandos direkt ausführst:
Code:
plot(i, p, '*');
hold('on');


Zitat:
Egal wie ich die Ausdrücke trenne, es kommt immer ein Fehler zurück.

Für das Forum ist es sehr leicht zu antworten, wenn Du den Code und die Fehlermeldung exakt postest. Dann können wir Ratschläge geben, ohne das Programm für Dich schreiben zu müssen.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.10.2010, 16:52     Titel:
  Antworten mit Zitat      
Hallo Jan S,
zunächst danke für Deine Antwort.
Das mag jetzt komisch klingen aber ich da ich mit der Anzeigendarstellung von Matlab noch nicht so ganz klarkomme habe ich mir es eben so gedacht:

- Eine Schleife läuft durch ABER:
nach jedem Schleifendurchlauf wird eben dieser PLOT-Ausdruck mit dem Ergebnis des in der Schleife Berechneten erstellt und in eine extra-Variable geschrieben. Somit habe ich nach 10 Durchläufen in der Extravariablen 10x den plot-Ausdruck mit den unterschiedlichen Ergebnissen.

Dann kann ich bequem die plot-Ausdrücke nehmen und mir anzeigen lassen. Zum Verständnis hier der Code:
Code:

for i=1:10;  % Schleife mit 10 Durchläufen

r=round(rand(50,50));  % Zufallsberechnung 50x50
c=(r/2); % teilt das Ergebnis durch zwei
k=sum(sum(c>=0.5)); % diese und die nächste Zeile sollen 1.aus den Kommazahlen Nullen und Einsen erzeugen, 2. die Menge der Nullen bzw. Einsen feststellen.
l=sum(sum(c<=0.3));
p=abs(k-l)  % Hier wird die Differenz der Summen wieviele Nullen bzw. Einsen es gibt festgestellt und als positive Zahl dargestellt.
a=('plot(',i,',',p,'*',');hold;'); % Der Knackpunkt: Die Ergebnisse werden in den Plot-Ausdruck geschrieben, welcher wiederum in den Array b (nächste Zeile) gespeichert werden soll. Nach 10 Durchläufen habe ich somit 10 Plot-Ausdrücke mit denen ich mir die Verteilung wunderbar anzeigen kann
b=[b a];

end
 


Vereinfacht ausgedrückt möchte ich das Programm zufällig eine Münze werfen lassen. Dabei kann a*Kopf und b*Zahl entstehen (hier 0 und 1). Nach 10000 WÜrfen habe ich also z.b. 5500*Kopf und 4500*Zahl. Die Differenz davon ist 500, und genau das möchte ich in Verbindung mit der Laufvariablen i ausgeplottet kriegen sodass z.B. für i=1 mein Punkt im Plot (1/500) ist...

Ich hoffe ihr versteht was ich meine t Wink Wer nen einfachereren Weg kennt nur zu! Wie gesagt ich befinde mich sozusagen am Anfang meiner Matlab-Karriere und bin für jeden Hinweis dankbar...

Danke!

edit by denny: Bitte bei Kommentaren ein Leerzeichen zwischen Prozenzeichen und Text setzen
 
TI300

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.10.2010, 19:54     Titel:
  Antworten mit Zitat      
Okay ich bin jetzt selbst auf eine Lösung gekommen die gar nicht so kompliziert ist...:
Code:

% Schleife mit 10 Durchläufen
for i=1:10  
   % Zufallsberechnung 50x50
   r=round(rand(50,50));  
   % teilt das Ergebnis durch zwei
   c=(r/2);
   % diese und die nächste Zeile sollen 1.aus den   Kommazahlen Nullen und Einsen erzeugen, 2. die Menge der Nullen bzw. Einsen feststellen.
   k=sum(sum(c>=0.5));
   l=sum(sum(c<=0.3));
  % Hier wird die Differenz der Summen wieviele Nullen bzw.
   p=abs(k-l)  

   b=[b p];

   i=0:1:10; plot(i,b,'*');

end

 


Ich speichere jeden Wert von p im Array b.
Ich definiere den Bereich so groß wie die Schleife oft durchläuft und gebe den quasi an den y-wert das b. Wusste nicht, dass Matlab das automatisch so übernimmt, hätte ja auch sein können dass es mir immer nur das erste Element aus dem Array b zeichnet. Aber Glück gehabt.

Wem trotzdem noch die Lösung zu dem Problem, wie ich diesen Plot-Ausdruck automatisch generiert kriege, kennt, bitte trotzdem schreiben! =)

edit by denny: Bitte bei Kommentaren ein Leerzeichen zwischen Prozenzeichen und Text setzen
 
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 - 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.