Vector 电场矢量图

Vector 电场矢量图,vector,scilab,Vector,Scilab,我试图在scilab中绘制电场矢量。但它总是错误的: champ:输入参数的大小错误:大小不兼容 守则: epsilon0=1e-9/(36*%pi); q=3e-9; p=[-1,0,0]; x=-2:0.2:2; y=-2:0.2:2; [px,py]=meshgrid(x,y); for m=1:length(x), for n=1:length(y), xp=px(m,n); yp=py(m,n); vektorr1x=xp-p(

我试图在scilab中绘制电场矢量。但它总是错误的:

champ:输入参数的大小错误:大小不兼容

守则:

epsilon0=1e-9/(36*%pi);
q=3e-9;
p=[-1,0,0];
x=-2:0.2:2;
y=-2:0.2:2;
[px,py]=meshgrid(x,y);

for m=1:length(x),
    for n=1:length(y),
        xp=px(m,n);
        yp=py(m,n);
        vektorr1x=xp-p(1);
        vektorr1y=yp-p(3);
        r1=sqrt(vektorr1x^2+vektorr1z^2);
        if r1~=0 then
            ar1x=vektorr1x/r1;
            ar1y=vektorr1y/r1;
            E1x=q*ar1x/(4*%pi*epsilon0*r1^2);
            E1y=q*ar1y/(4*%pi*epsilon0*r1^2);
        else
            E1x=0;
            E1y=0;
        end,
    end,
end,
pl=champ(px,py,E1x,E1y,[-2,-1,2,-1]);

您不必使用循环,以下脚本可执行您所需的操作:

epsilon0=1e-9/(36*%pi);
q=3e-9;
p=[-1,0,0];
x=-2:0.2:2;
y=-2:0.2:2;
[px,py]=ndgrid(x,y);

vektorr1x=px-p(1);
vektorr1y=py-p(3);
r1=sqrt(vektorr1x.^2+vektorr1y.^2);
ar1x=vektorr1x./r1;
ar1y=vektorr1y./r1;
E1x=q*ar1x./(4*%pi*epsilon0*r1.^2);
E1y=q*ar1y./(4*%pi*epsilon0*r1.^2);
E1x(r1==0)=0;
E1y(r1==0)=0;

clf
champ(x,y,E1x,E1y,[-2,-1,2,-1]);

若要打印字段,请不要使用meshgrid对域进行采样,而是使用ngrid。此外,不要忘记使用点前缀运算符。

其中
champ
是什么?我找不到它作为内置函数的引用,如果它是自定义的,那么您没有提供足够的信息进行调试。虽然错误看起来很有描述性…@Wolfie我已经删除了MATLAB标记,MATLAB和scilab不是同一种语言,MATLABchamp中不存在此函数。它是一个scilab函数(类似于MATLAB中的quiver)。