matlab问题,急~高手帮忙~

来源:百度知道 编辑:UC知道 时间:2024/06/06 23:34:30
Matrix must be square求助~~

程序如下:

[x,y]=meshgrid(-10:0.1:10);
[Q,R]=cart2pol(x,y);
R(R<=1)=NaN;
q=input('请输入电偶极子的电量q=','s')
d=input('请输入电偶极子的间距d=','s')
E0=8.5*1e-12;
K0=q/4/pi/E0;
g1=sqrt((d./2)^2-d.*R.*cos(Q)+R.^2);
g2=sqrt((d./2)^2+d.*R.*cos(Q)+R.^2);
G=log(K0*g2./g1);
contour(x,y,G,17,'g');
hold on
[ex,ey]=gradient(-G);
sx=5*sin(tt);sy=5*cos(tt);
streamline(x,y,ex,ey,sx,sy);
xlabel('x');ylabel('y');
hold off;

错误情况:

??? Error using ==> mpower
Matrix must be square.

Error in ==> main at 8
g1=sqrt((d./2)^2-d.*R.*cos(Q)+R.^2);

小弟做仿真,哪位高手帮帮忙啊~~ 万分感谢~~
貌似还是不对啊,我加了“点”它就出现如下错误:
??? Error using ==> times
Matrix dimensions must agree.

Error in ==> main at 8
g1=sqrt((d./2).^2-d.*R.*cos(Q)+R.^2);

那TT怎么定义呢~

先让你看一下input的使用:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
q=input('请输入电偶极子的电量q=','s');k=q/1
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
你输入23的时候,会显示
k =

50 51
这是因为带选项‘s’的input函数输出的23是一个字符串,数字2,3的ASCII码分别是50,51,这就有了上面k的结果,k有两个值,到了程序第八行就出错了,这个也是matlab提示下面错误的原因:
??? Error using ==> times
Matrix dimensions must agree
你的原程序里面p,d都输入单个数字就不会有这个提示,但是这也已经违背了你输入的原意愿

你的程序有明显的3个错误:
第一个错误:
q=input('请输入电偶极子的电量q=','s')
d=input('请输入电偶极子的间距d=','s')
应改为
q=input('请输入电偶极子的电量q=','s');
d=input('请输入电偶极子的间距d=','s');
q=str2num(q);
d=str2num(d);
或者直接使用
q=input('请输入电偶极子的电量q=')
d=input('请输入电偶极子的间距d=')
第二个错误:
g1=sqrt((d./2)^2-d.*R.*cos(Q)+R.^2);
g2=sqrt((d./2)^2+d.*R.*cos(Q)+R.^2);
应改为
g1=sqrt((d./2).^2-d.*R.*cos(Q)+R.^2);
g2=sqrt((