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

Stromlinie eines imaginären Teilchens aus 2D Feld berechnen

 

SteffenStream

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.04.2023, 10:27     Titel: Stromlinie eines imaginären Teilchens aus 2D Feld berechnen
  Antworten mit Zitat      
Hallo zusammen,

ich hab ein skalares 2D Feld (anbei). Ich würde gerne die Stromlinie eines imaginären Teilchens berechnen. In meinem Verständnis startet das an einem bestimmten Punkt und bewegt sich dann entlang einer Linie konstanten Wertes beziehungsweise geringster Veränderung.
Gibt es Ideen oder einen einfachen Befehl in Matlab wie man sich sowas berechnen kann?

Für quiver, stream2 und streamline brauche ich aber immer schon die Vektoren in x und y Richtung. Daher hab ich versucht mir ein solches Feld selber zu berechnen indem ich untersuche in welche Richtung die Abweichung an jedem Punkt am geringsten ist. Allerdings funktioniert das anschließende Auswerten nicht wie gewünscht.

Code:

close all
clear
clc

load('m.mat')

figure
imagesc(m,'AlphaData',~isnan(m));

u = zeros(size(m,1),size(m,2));
v = zeros(size(m,1),size(m,2));

for j=2:size(m,2)-1
    for i=2:size(m,1)-1                                                     % Berechne gerningste Abweichung in alle Raumrichtung
        diff(1) = m(i,j)-m(i,j+1);                      
        diff(2) = m(i,j)-m(i+1,j+1);
        diff(3) = m(i,j)-m(i+1,j);
        diff(4) = m(i,j)-m(i+1,j-1);
        diff(5) = m(i,j)-m(i,j-1);
        diff(6) = m(i,j)-m(i-1,j-1);
        diff(7) = m(i,j)-m(i-1,j);
        diff(8) = m(i,j)-m(i-1,j+1);

        [value,index] = min(abs(diff));

        if isnan(value)                                                     % erstelle je nach Raumrichtung einen Vektor
            u(i,j) = 0;
            v(i,j) = 0;  
        elseif index == 1
            u(i,j) = 0;
            v(i,j) = 1;
        elseif index == 2
            u(i,j) = 1;
            v(i,j) = 1;
        elseif index == 3
            u(i,j) = 1;
            v(i,j) = 0;
        elseif index == 4
            u(i,j) = 1;
            v(i,j) = -1;
        elseif index == 5
            u(i,j) = 0;
            v(i,j) = -1;    
        elseif index == 6
            u(i,j) = -1;
            v(i,j) = -1;
        elseif index == 7
            u(i,j) = -1;
            v(i,j) = 0;    
        elseif index == 8
            u(i,j) = -1;
            v(i,j) = 1;    
        end
    end
end

figure
quiver(u,v)

figure
verts = stream2(u,v,334,32);
lineobj = streamline(verts);
 


Danke für jeden Hinweis und frohe Ostern

Steffen

m.mat
 Beschreibung:

Download
 Dateiname:  m.mat
 Dateigröße:  427.84 KB
 Heruntergeladen:  135 mal
m.mat
 Beschreibung:

Download
 Dateiname:  m.mat
 Dateigröße:  427.84 KB
 Heruntergeladen:  142 mal


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