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

Gitter plotten uvm

 

ng83
Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 26.11.12
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 22.06.2015, 10:03     Titel: Gitter plotten uvm
  Antworten mit Zitat      
Hallo,
ich möchte für das folgende Problem ein Gitter
1. erzeugen und
2.plotten

Dies habe ich wie folgt erfolglos begonnen:

Code:

%fem program, which solves a linear problem on triangles
%3------6------9
%| 4 /  | 8 /  |
%|  / 3 |  / 7 |
%2------5------8
%| 2 /  |  6/  |
%|  / 1 |  / 5 |
%1------4------7
% with following boundary conditions:
%----Dirichlet-----------------------
% u(x_1,x_2)=x_2 on the rightEdge
% u(x_1,x_2)=0   on the lowerEdge
%----Neumann-------------------------
% du/dn=-x_2     on the leftEdge
% du/dn=x_1      on the upperEdge
%************************************
%nNodes    number of nodes, nNodes=9
%nElem     number of finite elements, nElem=8
%nTria     3xn matrix of all triangles, if n number of triangles
%rightEdge nodes of the right edge
%leftEdge  nodes of the right edge
%upperEdge nodes of the right edge
%lowerEdge nodes of the right edge
%nodesOnRiBound vector
%nodesOnLeBound vector
%nodesOnLoBound vector
%nodesOnUpBound vector
nNodes=9;
nTriag=[1 5 4;1 2 5;2 6 5;2 3 6;4 8 7;4 5 8; 5 9 8;5 6 9];
coordNodes=[0 0;0 1/2;0 1;1/2 0;1/2 1/2;1/2 1;1 0;1 1/2;1 1];
xcoord=coordNodes(:,end-1);
ycoord=coordNodes(:,end);
%[X,Y]=meshgrid(xcoord,ycoord);
%plot(X,Y)
%nTria=zeros(3,8);
rightEdge=[7 8 9];
leftEdge=[1 2 3];
upperEdge=[3 6 9];
lowerEdge=[1 4 7];

nodesOnRiBound=unique(rightEdge);
nodesOnLeBound=unique(leftEdge);
nodesOnUpBound=unique(upperEdge);
nodesOnLoBound=unique(lowerEdge);

rectangle('Pos',[0,0,1,1])
rectangle('Pos',[0,0,0.5 0.5])
rectangle('Pos', [0,0.5,0.5 0.5])
rectangle('Pos',[0.5,0,0.5 0.5])
axis([0 2 0 2])

plot([0,0],[1,1])
line(coordNodes(1,1),coordNodes(2,2))
[X Y]=meshgrid(xcoord,ycoord)
triplot(nTriag,X,Y)

 


Ich bin für jede gute Idee offen.
Danke und VG
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.06.2015, 11:01     Titel:
  Antworten mit Zitat      
Hallo,

bitte immer dazuschreiben, inwiefern das Ergebnis von der Erwartung abweicht. Nach dem ersten Graphik-Befehl sollte auch jeden Fall ein
Code:

kommen, damit die vorherigen Graphiken nicht verlorengehen.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 26.11.12
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 22.06.2015, 15:50     Titel:
  Antworten mit Zitat      
Hallo Harald,
also hier sind mehrere Varianten/Versuche dargestellt, ein solches Gitter zu erzeugen.
Mit
Code:


rectangle('Pos',[0,0,1,1])
hold on
rectangle('Pos',[0,0,0.5 0.5])
rectangle('Pos', [0,0.5,0.5 0.5])
rectangle('Pos',[0.5,0,0.5 0.5])
axis([0 2 0 2])
 


bekomme ich nur die Unterteilung in 4 Rechtecke. Ich brauche jedoch 8 gleichroße Dreiecke (finite Elemente)

mit
Code:

plot([0,0],[1,1])
 

habe ich versucht den Punkt (0,0) und (1,1) mit einer Gerade zu verbinden. Erhalten habe ich ein leeres Koordinatensystem

die rectangel Befehle, hold on und obiger plot Befehlt ergibt wieder eine Unterteilung in 4 Rechtecke.

Hier
Code:

line(coordNodes(1,1),coordNodes(2,2))
 

ebenfalls ein leeres Koordinatensystem

und hier
Code:

[X Y]=meshgrid(xcoord,ycoord)
 

zwei große Matrizen. Wahrscheinlich wurde jeder Punkt mit jedem Punkt verknüpft.

Ich denke zielführend für mein Fem-Problem wird wohl am ehesten dieser Befehl sein:
Code:

triplot(nTriag,X,Y)
 

Hier bekommen ich jedoch nicht das gewünschte Gitter(s.1. Beitrag), nur eine senkrechte Linie.

VG und danke!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.06.2015, 16:10     Titel:
  Antworten mit Zitat      
Hallo,

ich kann nur empfehlen, die Doku der Befehle zu lesen.

Code:
plot([0,0],[1,1])

verbindet den Punkt [0, 1] mit sich selbst. Das erste Argument sind nämlich die x-Werte aller Punkte, das zweite Argument die y-Werte aller Punkte.

Wenn du [0,0] mit [1,1] verbinden willst, dann
Code:
plot([0,1], [0,1])


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

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 26.11.12
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 22.06.2015, 18:01     Titel:
  Antworten mit Zitat      
Geht das auch noch eleganter?Das ist ja nur Grundlage für ein größeres,später beliebiges Gitter.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 22.06.2015, 19:01     Titel:
  Antworten mit Zitat      
Hallo,

triplot hast du ja schon gefunden. Ich kannte den Befehl bisher nicht und könnte da auch nur die Dokumentation lesen und mich durch die Beispiele durcharbeiten.

Intuitiv würde ich sagen:
Code:
nTriag=[1 5 4;1 2 5;2 6 5;2 3 6;4 8 7;4 5 8; 5 9 8;5 6 9];
coordNodes=[0 0;0 1/2;0 1;1/2 0;1/2 1/2;1/2 1;1 0;1 1/2;1 1];
xcoord=coordNodes(:,1);
ycoord=coordNodes(:,2);
triplot(nTriag, xcoord, ycoord)


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

Forum-Anfänger

Forum-Anfänger


Beiträge: 43
Anmeldedatum: 26.11.12
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 22.06.2015, 21:28     Titel:
  Antworten mit Zitat      
aha, cool, danke!
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.