求matlab大神帮忙!!非常感谢!!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求matlab大神帮忙!!非常感谢!!相关的知识,希望对你有一定的参考价值。
下面是一段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中。。求帮助!!
没有提示哪个函数或变量出错,求大神帮忙!!
追答刚才用你的程序运行了一下,改了两个地方:
一是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
希望对你有帮助。
rad是r,敲错了,d(a1,a2)是d矩阵中位置为(a1,a2)的元素
求大神帮忙用matlab程序做BP神经网络预测
预测2015年Y的值 X1~X7都是Y的影响因素 答案要有截图 最好可以把程序留一下 谢谢
1、样本数据太少,用BP网络预测可能并非好选择。说不定用一般的回归分析效果更好。
2、要对Y进行预测,需要知道2015年的影响因素X1~X7才行吧?
BP神经网络的参考程序:
data = [ ...2009 2102.13 108.69 1104.99 888.45 700.6 64.28 8204.5 17502.1
2010 2701.61 132.74 1456.64 1121.64 839.02 99.58 9100 20760.52
2011 3636.62 208.22 2002.1 1426.29 1111.12 123.09 10086.88 29286.8
2012 4164.32 229.05 2303.9 1631.37 1293.62 176.42 12005.115 33720.1
2013 4672.91 247.21 2583.75 1841.95 1480.84 181.9 13136.77 39131
2014 5157.97 257.63 2872.01 2028.33 1666.75 200.87 15110 42194
];
year = data(:,1);
p = data(:,2:8).';
t = data(:,9).';
net = newff(p,t,10);
net = train(net,p,t);
y1 = sim(net,p(:,end))
由于没有2015年的X1~X7数据,最后一句用2014年的数据进行测试。
如果用多元线性回归:
c=regress(t',p')y2=c'*p(:,end)
由于样本数量太少(少于影响因素的数量),这种情况下,实际上回归的结果可以几乎没有误差(只有数值误差)。当然,用于预测是否准确要另当别论。
参考技术A 不要用截图,不能直接利用,要方便别人利用来写程序、调试。可直接帖数据或发文件,否则,要别人一个一个再输入数据,可能要花时间。请补充下。 参考技术B 2015年没数据,怎么预测?以上是关于求matlab大神帮忙!!非常感谢!!的主要内容,如果未能解决你的问题,请参考以下文章