如何用contourf在Matlab中模拟和绘制电场?

如何用contourf在Matlab中模拟和绘制电场?,matlab,plot,Matlab,Plot,我想知道如何画一张图,图中有2个电荷Q和-Q,以及它们的总E,对于一个特定的点(例如(4,5)),轮廓为f。。 我的M-file实际上扫描区域(从-3x到3x),计算每个点的E,将其存储在表格中,但在此之后,我不知道如何使用contourf绘制它 syms i syms j syms d d=input('dwse thn timi tou d,ths apostashs') j=0 i=0 for j=-d:d/1000:d j=j+1 for i=-d:d/1000:d

我想知道如何画一张图,图中有2个电荷Q和-Q,以及它们的总E,对于一个特定的点(例如(4,5)),轮廓为f。。 我的M-file实际上扫描区域(从-3x到3x),计算每个点的E,将其存储在表格中,但在此之后,我不知道如何使用contourf绘制它

syms i
syms j
syms d
d=input('dwse thn timi tou d,ths apostashs')
j=0
i=0
for j=-d:d/1000:d

    j=j+1

for i=-d:d/1000:d

    i=i+1
    z=(i,j)

end, end

你需要在你的问题中提供更多的信息:你有什么问题?你试过什么

但是,假设
z(i,j)
是在2d网格上计算的电场,只需在
之后调用

contourf(z)

根据库仑定律,单个离散电荷q在距离r处产生的电场如下所示:

E=q/(4*pi*e0*r.^2)

如果你有几个电荷,你可以使用叠加原理,加上每个电荷的贡献

剩下要做的唯一一件事就是创建一个网格来计算电场。为此,您可以使用Matlab函数
meshgrid

Matlab中的一个简单示例是:

k=1/4/pi/8.854e-12;
d=2;
q=[-1 1];
x=[-d/2 d/2];
y=[0 0];

dx=0.01;
X=(-d:dx:d);
Y=(-d:dx:d);
[X Y]=meshgrid(X,Y);

E=zeros(size(X));

for i=1:numel(q)
    r=sqrt((X-x(i)).^2+(Y-y(i)).^2);
    E=E+k*q(i)./r.^2;
end

E(isinf(E))=NaN;

figure;
contourf(X,Y,E);
axis image;

希望对你有帮助。你可以阅读
contourf
的文档,根据需要调整绘图。

我实际上不知道如何用循环填充阵列。。有两个电荷-Q(-d/2,0)和Q(d/2,0),它们的距离是d。我必须为x(-2d,2d)y(-2d,2d)中的每个点制作一个带有Etotal结果的数组,然后使用contourf。。我迷路了:/@zwoskasere好吧,你需要了解你正在求解/使用的方程。这听起来像是一个家庭作业-是吗?我有方程,我只是不知道如何在matlab上的循环中填充数组。。它的物理作业非常感谢你的回复和你的时间。。!你能补充一些意见吗?我不知道如何修改它来计算E,并根据场强为每个点绘制不同的颜色。。我明白了: