求matlab大神帮忙!!非常感谢!!

下面是一段matlab代码,运行时总是出现Error:TheinputcharacterisnotvalidinMATLABstatementsorexpressions... 下面是一段matlab代码,运行时总是出现Error: The input character is not valid in MATLAB statements or expressions.
代码如下:
n=100;
width=20;
height=20;
r=5;
x=rand(n,1)*width;
y=rand(n,1)*height;
base1=width;
base2=width;
d=ones(n,n);
s=[];
T=ones(n,1);
crossarea=0;
area=[];
syms d0 d1 allarea areapercent
for i=1:n
for j=1:n
d(i,j)=sqrt((x(i)-x(j))^2+(y(i)-y(j))^2);
end
end
for i=1:n
d0=sqrt((x(i)-width/2)^2+(y(i)-height)^2);
if d0<base1
base1=d0;
a1=i;
end
end
s=[s,a1];
T(a1)=0;
for i=1:n
if T(i)==1
d1=abs(distance(x(i),y(i),x(a1),y(a1))-sqrt(3));
if d1<base2
base2=d1;
a2=i;
end
end
end
s=[s,a2];
T(a2)=0;
area(1)=2*(rad^2*arccos(d(a1,a2)/(2*rad))-d(a1,a2)*sqrt(rad^2-d(a1,a2)^2/4)/2); while (length(s)*pi*r^2-area)>=height*width
sl=length(s);
count=[];
area2=[];
for i=1:n
area1=0;
if T(i)==1
for j=1:sl
if d(i,j)<2*r
area3=2*(rad^2*arccos(d(i,j)/(2*rad))-d(i,j)*sqrt(rad^2-d(i,j)^2/4)/2);
area1=area1+area3;
end
end
end
if area1~=0
count=[count,i]';
end
area2=[area2,area1]';
end
[V,Ind]=min(area2);
area=[area',V'];
s=[s',count(Ind)]';
T(count(Ind))=0;
end
for i=1:length(area)
crossarea=crossarea+area(i);
end
allarea=pi*r^2*length(s)-crossarea;
areapercent=allarea/(width*height);
pointpercent=length(s)/n;
plot(x,y,s);
背景是:有两个集合T和S,T有n个点,s为空集,目标是要找出T中符合条件的点加入集合s中,T和s保存的都是点的序号(共有n个点)。相当于把T中的点剪切到了s中。。求帮助!!
展开
 我来答
nc
2013-05-29 · 知道合伙人自然科学行家
nc
知道合伙人自然科学行家
采纳数:17 获赞数:47
CFD,科学计算研究者

向TA提问 私信TA
展开全部
错误报告提示的是哪个变量或函数出错?你跟据它的提示找出来,看是不是拼写错误。
追问
没有提示哪个函数或变量出错,求大神帮忙!!
追答

刚才用你的程序运行了一下,改了两个地方:

一是arccos(),matlab里不是这样用的,应该是acos()。

二是plot()的用法不当,第三个参数应是点的属性,如颜色、字体、形状、大小等。所以建议改成plot(x,y,'O');O表示画圈,比较大,看起来清楚。

如果需要的话,还可以加上每个点的序号,方便你识别它们。

plot(x,y,'o');hold on

for i=1:size(s,2)

plot(x(s(i)),y(s(i)),'+');hold on

ezplot(@(x1,y1)(x1-x(s(i))).^2+(y1-y(s(i))).^2-25,[0,20]);hold on%画圆

text(x(s(i)),y(s(i)),num2str(s(i)));

end

希望对你有帮助。

我行我素850915
2013-05-29 · TA获得超过8241个赞
知道大有可为答主
回答量:5788
采纳率:77%
帮助的人:1779万
展开全部
rad是啥?d(a1,a2)是啥?
追问
rad是r,敲错了,d(a1,a2)是d矩阵中位置为(a1,a2)的元素
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式