声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1001|回复: 3

[编程技巧] Matrix must be square 出错求助

[复制链接]
发表于 2007-11-29 00:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
function f=p1fun(x,w1,w2)
t=1000*1540;
l=0.0045;
k=2*pi/0.0015;
a=5;
n=length(x);
m=n/3;
i=1:m;
  xx(i)=-0.0105+0.00525*rem((i-1),5)+x(i+m);
  w=(i-1)/5;
  yy(i)=0.0105-0.00525*floor(w)+x(i+2*m);
  R1(i)=(0.01+(w1-xx(i)).^2+(w2-yy(i)).^2)^(1/2);
  R2(i)=(0.01+xx(i).^2+yy(i).^2)^(1/2);
  t1(i)=(R2(i)-0.1)*k;
  q1(i)=(k*(w1-xx(i))*l)/2*R1(i)+eps;
  s1(i)=(k*(w2-yy(i))*l)/2*R1(i)+eps;
  A1(i)=sin(q1(i))/q1(i);
  B1(i)=sin(s1(i))/s1(i);
  p1(i)=abs(j*x(i)*t*l.^2*exp(j*t1(i))*exp(-j*k*R1(i))*A1(i)*B1(i)/(0.001*R1(i)));
f=sum(p1);
该函数以前是用for循环实现的,我想尽量用矢量化,来节省时间.但是出现不少问题,请版主指点下,是否能避免使用for循环.
错误描述:
??? Error using ==> ^
Matrix must be square.
Error in ==> E:\matlab\work\P1fun.m
On line 15  ==>   R1(i)=(0.01+(w1-xx(i)).^2+(w2-yy(i)).^2)^(1/2);
输入变量x为75维,即n=75,m=25;

[ 本帖最后由 eight 于 2007-11-29 10:20 编辑 ]
回复
分享到:

使用道具 举报

发表于 2007-11-29 10:19 | 显示全部楼层
原帖由 lyx_812 于 2007-11-29 00:35 发表
function f=p1fun(x,w1,w2)
t=1000*1540;
l=0.0045;
k=2*pi/0.0015;
a=5;
n=length(x);
m=n/3;
i=1:m;
  xx(i)=-0.0105+0.00525*rem((i-1),5)+x(i+m);
  w=(i-1)/5;
  yy(i)=0.0105-0.00525*floor(w) ...

出错问题和矢量化问题都可以在置顶帖中找到,尤其是前者,最后那个 ^ 应该是点运算。另外,请学会看错误提示,这个在置顶帖中也能找到
 楼主| 发表于 2007-11-29 10:33 | 显示全部楼层
谢谢院长,我再看看!
 楼主| 发表于 2007-11-29 11:12 | 显示全部楼层
function f=p1fun(x,w1,w2)
t=1000*1540;
l=0.0045;
k=2*pi/0.0015;
a=5;
n=length(x);
m=n/3;
i=1:m;
  xx(i)=-0.0105+0.00525*rem((i-1),5)+x(i+m);
  w=(i-1)/5;
  yy(i)=0.0105-0.00525*floor(w)+x(i+2*m);
  R1(i)=(0.01+(w1-xx(i)).^2+(w2-yy(i)).^2).^(1/2);
  R2(i)=(0.01+xx(i).^2+yy(i).^2).^(1/2);
  t1(i)=(R2(i)-0.1)*k;
  q1(i)=(k.*(w1-xx(i)).*l)/2.*R1(i)+eps;
  s1(i)=(k.*(w2-yy(i)).*l)/2.*R1(i)+eps;
  A1(i)=sin(q1(i))/q1(i);
  B1(i)=sin(s1(i))/s1(i);
  p1(i)=abs(j.*x(i).*t*l.^2.*exp(j*t1(i)).*exp(-j*k.*R1(i)).*A1(i).*B1(i)/(0.001*R1(i)));
f=sum(p1);
改过之后运行正常,之前用for循环时好象对"点"的要求不是很严格.多谢院长.
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-9-23 19:28 , Processed in 0.055965 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表