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

Wertebereich einschränken

 

Schwabe12345
Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 02.06.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.06.2014, 14:09     Titel: Wertebereich einschränken
  Antworten mit Zitat      
Hallo zusammen,

ich bin noch recht neu in der Benutzung von Matlab, darum seht es mir bitte nach, wenn meine Fragen evtl. sehr bodenständig sind.

Ich beschäftige mich gerade mit dem Plotten einer Funktion, die von zwei Variablen (y,z) abhängig ist.
Die Funktion beschreibt die Zustände in einem Kreisquerschnitt.
Ich gebe mir das Ergebnis über surfc(z,y,x) aus, was soweit alles auch funktioniert. Allerdings erscheinen ja nun logischerweise auch die Randbereiche in den Ecken, die nicht wirklich definiert sind. Der Kreisquerschnitt hat z. B. einen Radius von 10; das heißt, der Punkt y=10; z=10 fällt aus dem Bereich heraus, wird aber im Diagramm dargestellt bzw. auch von der Funktionsvorschrift berechnet. Ein Wechsel ins Polarkoordinatensystem ist leider ausgeschlossen, da ich die beiden Koordinaten brauche.
Gibt es eine Möglichkeit, den Wertebereich in Kreisform (z.B. r^2=y^2+x^2) einzuschränken?

Vielen Dank im Voraus!
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


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

du kannst die entsprechenden Werte auf NaN setzen, dann werden sie im Plot nicht dargestellt:

Code:
X (Y^2 + Z^2 < 10) = NaN;


Damit das klappt müssen Y und Z Matrizen derselben Größe wie X sein. Diese Matrizen können ggf. mit meshgrid erstellt werden.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 02.06.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.06.2014, 08:19     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank für die Antwort!
Das hat mir schon mal weitergeholfen.
Nun habe ich aber bei der Grafikausgabe ein paar unschöne Effekte drin.
Im Anhang findet ihr zwei Bilder von meinen surfc Auswertungen.

Wie kann ich beim ersten Bild die komischen Verbindungslinien wegbekommen und beim zweiten die schwarzen Färbungen an der Diagrammflächenunterseite?

Vielen Dank im Voraus!

Grüße,
Schwabe

MatLab_Grafikproblem.pdf
 Beschreibung:

Download
 Dateiname:  MatLab_Grafikproblem.pdf
 Dateigröße:  84.86 KB
 Heruntergeladen:  402 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 03.06.2014, 18:21     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Wie kann ich beim ersten Bild die komischen Verbindungslinien wegbekommen und beim zweiten die schwarzen Färbungen an der Diagrammflächenunterseite?

Um dir da helfen zu können, müsste man wissen, wie das zustandekommt.
Bitte Beispielcode mit Beispieldaten zur Verfügung stellen.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 02.06.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.06.2014, 06:56     Titel:
  Antworten mit Zitat      
Hallo und vielen Dank!

Hier ein Auszug aus meinem Code:

Code:


d = 4;
Aufloesung = 51;
sigma_F = 1700;
a_F = 2;

%Definition der Vektoren für die y- und z-Koordinate
z = linspace(-d/2,d/2,Aufloesung);
y = linspace(-d/2,d/2,Aufloesung);

for i1 =1:Aufloesung
    for i2 =1:Aufloesung
        if(z(1,i1)^2+y(1,i2)^2)^0.5>=d/2
            ES_2(i1,i2)=NaN
        else
            if (z(1,i1)>a_F)
                ES_2(i1,i2)=sigma_F
            elseif (z(1,i1)<(-1)*a_F)
                ES_2(i1,i2)=sigma_F*(-1)
            else
                ES_2(i1,i2)=sigma_F*z(1,i1)/a_F
            end
        end
    end
end

%surfc(Z,Y,ES_2)
contourf(Z,Y,ES_2)
 


Vielen Dank!

Schöne Grüße,
Schwabe
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

du lässt dir gerne das Command Window zuspammen, oder? ;)
Strichpunkte am Ende der Zeilen helfen...

Da Y und Z nicht definiert sind, läuft der Code so bei mir nicht.
Wenn ich stattdessen y und z verwende, läuft er wunderbar und die Ergebnisse sehen schön aus.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 02.06.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.06.2014, 15:05     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielen Dank für deine Antwort!

Bei dem conturf Befehl bekomme ich auch sehr gute Visualisierungen hin. Allerdings wird die Grafik unschön wenn ich den surfc Befehl nehme.

Was kann ich machen, damit das Diagramm beim surfc Befehl "normal" aussieht?

Besten Dank im Voraus!

PS: Die Strichpunkte helfen wirklich weiter Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 04.06.2014, 15:34     Titel:
  Antworten mit Zitat      
Hallo,

bei mir sieht es auch mit surfc gut aus. Ich nutze aber wie gesagt z und y statt Z und Y, da ich diese nicht habe.
Überprüfe bitte, ob du das Problem auch mit z und y hast.
Falls nicht damit aber mit Z und Y, dann bitte Code liefern, wie Z und Y erstellt werden.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 02.06.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.06.2014, 15:49     Titel:
  Antworten mit Zitat      
Hallo,

folgende Zeile habe ich für die Definition von Z und Y im Code:

Code:

[Z,Y]=meshgrid(z,y);
 


Wenn ich selbst klein y, und z nehme erhalte ich die im Anhang befindlichen Darstellungen.
Die Grafiken wurden mit folgendem Code erstellt:
Code:


d = 4;
Aufloesung = 51;
sigma_F = 1700;
a_F = 2;

%Definition der Vektoren für die y- und z-Koordinate
z = linspace(-d/2,d/2,Aufloesung);
y = linspace(-d/2,d/2,Aufloesung);

[Z,Y]=meshgrid(z,y);

%Berechnung der Biegespannungen durch die erste Biegung
for i1 =1:Aufloesung
    for i2 =1:Aufloesung
        if(z(1,i1)^2+y(1,i2)^2)^0.5>=d/2
            ES_2(i1,i2)=NaN;
        else
            if (z(1,i1)>a_F)
                ES_2(i1,i2)=sigma_F;
            elseif (z(1,i1)<(-1)*a_F)
                ES_2(i1,i2)=sigma_F*(-1);
            else
                ES_2(i1,i2)=sigma_F*z(1,i1)/a_F;
            end
        end
    end
end

figure;
surfc(z,y,ES_2);
 


Vielen Dank für die tolle Unterstützung!

Schwabe

Figure.jpg
 Beschreibung:

Download
 Dateiname:  Figure.jpg
 Dateigröße:  40.72 KB
 Heruntergeladen:  406 mal
Figure2.jpg
 Beschreibung:

Download
 Dateiname:  Figure2.jpg
 Dateigröße:  49.42 KB
 Heruntergeladen:  426 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Schwabe12345
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 02.06.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.06.2014, 15:54     Titel:
  Antworten mit Zitat      
... ich habe mir gerade nochmal die beiden von mir angehängten Bilder von vor zwei Minuten angesehen.
Komischerweise sind diese Bilder voll in Ordnung!

Ich habe nun einen Screenshot (links meine reale Darstellung am Bildschirm und rechts daneben das abgespeicherte jpg der Grafik) angehängt.

Kann es sich bei dem Thema um ein Einstellungsproblem handeln?

Besten dank!

Vergleich.pdf
 Beschreibung:

Download
 Dateiname:  Vergleich.pdf
 Dateigröße:  188.11 KB
 Heruntergeladen:  362 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

du kannst mal versuchen, den Renderer zu ändern, z.B.

Code:
set(gcf, 'Renderer', 'zbuffer')
oder 'painters' oder 'opengl'

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 02.06.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.06.2014, 07:53     Titel:
  Antworten mit Zitat      
Hallo Harald,

Problem gelöst!
Vielen Dank!

Beste Grüße aus dem Schwabenland!
Private Nachricht senden Benutzer-Profile anzeigen
 
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.