How do you control the end of streamline?
8 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Daniel Niu
le 26 Avr 2023
Modifié(e) : akshatsood
le 31 Août 2023
Dear friends,
I am plot electric field line between two circle. I want the electric line end at the outer circle.
I can not find a option to achieve the goal.
Your help would be highly appreciated!
% Define radii of circles
r1 = 5; % radius of inner circle
r2 = 10; % radius of outer circle
% Define charge at center
q = 1; % charge
% Define grid for electric field calculations
x = linspace(-r2,r2,50);
y = linspace(-r2,r2,50);
[X,Y] = meshgrid(x,y);
% Define electric field function
Ex = @(x,y) q/(6.2*pi)*x./(x.^2+y.^2).^1.5;
Ey = @(x,y) q/(6.2*pi)*y./(x.^2+y.^2).^1.5;
% Calculate electric field components on grid
U = Ex(X,Y);
V = Ey(X,Y);
% Plot circles
theta = linspace(0,2*pi,100);
xc1 = r1*cos(theta);
yc1 = r1*sin(theta);
xc2 = r2*cos(theta);
yc2 = r2*sin(theta);
plot(xc1,yc1,'k-',xc2,yc2,'k-')
axis equal
% Plot electric field lines
%quiver(X,Y,U,V,'LineWidth',1,'MaxHeadSize',0.5);
streamline(X,Y,U,V,xc1,yc1)
%streamline(X,Y,U,V,xc2,yc2)
0 commentaires
Réponse acceptée
akshatsood
le 31 Août 2023
Modifié(e) : akshatsood
le 31 Août 2023
Hi Daniel,
I understand that you have plotted electric field lines between two circles, yet the lines fail to end at the outer circle and extend beyond that. One possible workaround can be modifying the properties of the lines using the dot notation. I am using the variables s1 and s2 to store the handles of streamlines as follows
s1 = streamline(X,Y,U,V,xc1,yc1);
s2 = streamline(X,Y,U,V,xc2,yc2);
To be more clear, if you enter s1 and s2 in the MATLAB command window, it will return a vector of lines which represents each blue line in the streamline plot.
class(s1) % matlab.graphics.primitive.Line
numel(s1) % 100
Now, when I observed both the streamline plots, I found that both have a common part among them which depicts the electric field lines that originate from the outer circle and extend outside. Hence, it would be enough to modify the properties of these lines using the s2 graphics handle. Here is the code snippet for your reference
for i = 1:numel(s2)
s2(i).Color = 'w'; % update the color of line to white
end
I hope this helps.
0 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Vector Fields dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!