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

时间:2011-12-15 14:37:31

标签: matlab plot

我想知道如何绘制具有2个电荷Q和-Q及其总E的图形,用于特定点(例如(4,5)),轮廓为f .. 我的M文件实际扫描区域(从-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

2 个答案:

答案 0 :(得分:3)

根据库仑定律,距离为r的单个离散电荷q产生的电场由下式给出:

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的文档,根据需要调整情节。

答案 1 :(得分:1)

您需要在问题中提供更多信息:您遇到的问题是什么?你有什么尝试?

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

contourf(z)