马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
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 编辑 ] |