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

Plot Funktion funktioniert nicht, Vektor definieren

 

Thomas123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.12.2011, 19:18     Titel: Plot Funktion funktioniert nicht, Vektor definieren
  Antworten mit Zitat      
Hallo allerseits,

ich habe das Problem dass die Plotfunktion von Matlab nicht funktioniert. In meinem Matlab-Programm werden zu einer Eingangsvariablen a mehrere Ausgabewerte berechnet. Diese werden bei Entfernen des Semikolons auch auf dem Bildschirm angezeigt. Je nach Schrittweite (Die Berechnung erfolgt mit Hilfe einer for-Schleife für die Eingangsvariable a) erhalte ich dann eine Vielzahl von Ausgabewerten (Pro Schleifendurchlauf ein Wert Bsp: (b(1),b(2)....b(n)).
Mit Hilfe der line-Funktion lassen sich diese auch graphisch darstellen.
Bsp.
x4 = b;
y4 = c;
line([x4],[y4],'Marker','+')

Falls ich die plot-Funktion verwende, wird zwar ein Graphik Fenster geöffnet, dieses bleibt aber leer.
Die Berechnung der Werte b,c.. erfolgt über mehrere Programmzeilen inklusive if-Verzweigungen und Lösen von Gleichungssystemen. Ich möchte nun 2 Vektoren x = [b(1),b(2),....(b(n)], y = [c(1),c(2),....c(n)] bilden, die automatisch mit den berechneten Werten befüllt werden und diese dann "plotten".
Wie geht das? In der Matlab Hilfe habe ich keine Lösung gefunden.
Mit freundlichen Grüssen und Dank im Voraus
Thomas


Harald
Forum-Meister

Forum-Meister


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

wenn x und y die "befüllten" Vektoren sind, sollte
Code:

gehen.

Wenn du mehrere Plots in einer Schleife machen möchtest und die Plots nicht überschrieben werden sollen, brauchst du
Code:


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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.12.2011, 20:42     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke für die Hilfe. Mit dem "Hold on" Befehl erhalte ich nun alle Punkte in der Grafik eingetragen. Jetzt würde ich noch gerne die Punkte mit einer Linie verbinden. Mit plot(x,y,'-') komme ich nicht weiter. Pro Schleifendurchgang wird ein Punkt gesetzt, die Verbindungslinie zweier benachbarter Punkte fehlt aber (da in der Schleife ja nur ein Punkt berechnet wird).
Wenn ich wüsste, wie ich die Vektoren mit den berechneten Werten befülle, wäre ich glaube ich am Ziel.

Gruß Thomas
 
Harald
Forum-Meister

Forum-Meister


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

ja, wo ist denn das Problem beim Befüllen?

Code:
x = zeros(1,N);
y = zeros(1,N);
for I=1:N
x(I) = ...
y(I) = ...
end


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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.01.2012, 19:31     Titel:
  Antworten mit Zitat      
Hallo Harald,
Vieln Dank für deinle Hilfe. Leider funktioniert es noch nicht.
Ich habe dein Beispiel mal in mein Programm eingebaut.

Code:

for (al=(albe-gr):sw:(albe+gr));
alpha = al;
%... es folgt die Berechnung der Größe ga

figure(3);
grid on;
N = ((albe+gr)-(albe-gr))/sw;
x6 = zeros(1,N)
y6 = zeros(1,N)
for I=1:N
x6(I) = alpha;
y6(I) = ga;
end
plot(x6,y6,'-.r*');
hold on
end


Ich habe die Semikolons in den Zeilen x6..,y6..,x6(I), und y6(I) entfernt.
Durch den Befehl zero wird ein Nullvektor erstellt und durch die Schleife wird dann das zuvor berechnete Ergebnis eingetragen. Leider wird immer der gleiche Zahlenwert eingetragen (Bsp.: 0 0 0 0 ; 1 0 0 0; 1 1 0 0...) Wenn die letzte Stelle des Zeilenvektors besetzt ist, beginnt das Spiel von vorne mit dem Einsatz des zweiten berechneteten Wertes.
Bsp. Für y6 werden die Werte 1,2,3,4 durch die erste for-Schleife berechnet.
Es sollte dann so aussehen:
y6 = (0 0 0 0)
y6 = (1 0 0 0)
y6 = (1 2 0 0)

Stattdessen sieht es so aus:

y6 = (0 0 0 0)
y6 = (1 0 0 0)
y6 = (1 1 0 0)
...
y6 = (0 0 0 0)
y6 = (2 0 0 0)
...


Gruß Thomas
 
Harald
Forum-Meister

Forum-Meister


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

das ist ja auch kein Wunder?
Wie sollen die Vektoren verschiedene Elemente enthalten, wenn du immer das gleiche reinschreibst? Du musst die for-Schleife schon mit denen kombinieren, in denen du die verschiedenen Werte für alpha und ga berechnest.

Statt die Strichpunkte zu entfernen ist es sinnvoller, den Debugger zu verwenden.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.01.2012, 21:07     Titel:
  Antworten mit Zitat      
Hallo,

habe die Lösung gefunden. Hilfreich war ein einfaches Beispiel zum Ausprobieren der zero-Funktion (x^2, zeros(1,4)...) . Die Schrittweite innerhalb der for-Schleife sollte auch ganzzahlig sein, da es sonst zu Problemen beim Befüllen des Nullvektors kommen kann. (7.000 ist für Matlab ungleich 7)
Code:

gr = 80; %  Intervalllänge
schra = 1000;  % Anzahl der Berechnungsschritte
nval = zeros(1,(schra+1))
nv.. = ...
albebeg = albe-(gr/2); % Startwert
for (fe=0:1000);
al = albebeg+ fe*(gr/schra); % Eingangswert alpha
...
fex = fe + 1;
nval(fex) = al
end
figure(1)
% axis equal
hold on
grid on
plot(nval,nv..,'bl')
end


Im Vergleich zur Line-Funktion innerhalb der for-Schleife ist mein Programm auch jetzt viel schneller. Liegt auch vielleicht daran, dass das Grafikfenster nicht bei jedem Schleifendurchlauf angepasst werden muss.

Gruss Thomas
 
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.