请matlab高手帮忙分析一下这个程序。详细解释每一步什么意思!答案满意加分!

w1=[0.1 6.8 -3.5 2.0 4.1 3.1 -0.8 0.9 5.0 3.9; 1.1 7.1 -4.1 2.7 2.8 5.0 -1.3 1.2 6.4 4.0];
w2=[7.1 -1.4 4.5 6.3 4.2 1.4 2.4 2.5 8.4 4.1;4.2 -4.3 0.0 1.6 1.9 -3.2 -4.0 -6.1 3.7 -2.2];
ww1=[ones(1,size(w1,2)); w1];
ww2=[ones(1,size(w2,2)); w2];
X=[ww1 -ww2];
k=1;
W=ones(size(X,1),1);
ok=0;
while(ok==0)
for i=1:size(X,2)
if (W'*X(:,i)<0) k=k+1;
W=W+X(:,i);
break;
else
if (i==size(X,2)) ok=1;
end
end
end
end
figure(1)
plot(w1(1,:),w1(2,:),'r.')
hold on
plot(w2(1,:),w2(2,:),'*')
xmin=min(min(w1(1,:)),min(w2(1,:)));
xmax=max(max(w1(1,:)),max(w2(1,:)));
ymin=min(min(w1(2,:)),min(w2(2,:)));
ymax=max(max(w1(2,:)),max(w2(2,:)));
xindex=xmin-1:(xmax-xmin)/100:xmax+1;
yindex=-W(2)*xindex/W(3)-W(1)/W(3);
plot(xindex,yindex)

你透露的信息太少了,起码应该告知一下这个程序是用来干什么的,大概用的是什么算法啊。
看来只能猜了,从最后画出的图来看,感觉这个程序的目的用逼近的方法得到一条分界线的样子,具体是什么算法,看不出来。你看看我的注解,自己研究一下吧。
在网页里可能显得比较乱,你复制粘贴到matlab的编辑器了再看吧。

w1=[0.1 6.8 -3.5 2.0 4.1 3.1 -0.8 0.9 5.0 3.9; 1.1 7.1 -4.1 2.7 2.8 5.0 -1.3 1.2 6.4 4.0]; %输入第一组十个点的平面坐标w1,对应图中的红点
w2=[7.1 -1.4 4.5 6.3 4.2 1.4 2.4 2.5 8.4 4.1;4.2 -4.3 0.0 1.6 1.9 -3.2 -4.0 -6.1 3.7 -2.2];%输入第二组十个点的平面坐标w2,对应图中的蓝星
ww1=[ones(1,size(w1,2)); w1]; %将2行10列的w1前面增加一个全为1的行,将其扩展为3行10列的ww1
ww2=[ones(1,size(w2,2)); w2]; %将2行10列的w2前面增加一个全为1的行,将其扩展为3行10列的ww2
X=[ww1 -ww2]; %将3行10列的ww1和ww2,合并成3行20列的X
k=1; % k在这里应该是定义了一个逼近次数的计数器
W=ones(size(X,1),1); % 感觉W应该是初始化了一个3行1列的向量,里面存得三个数用于得到最后的那条直线
ok=0; %给ok赋初值0, ok在这里应该是定义了一个循环结束的标志,
while(ok==0) %ok初始值为0,当ok的值变为1的时候,下面的循环语句就跳出了
for i=1:size(X,2) %i从1增加到20,相当于一个数组指针,依次对X中的各个列进行操作
if (W'*X(:,i)<0) %这是if语句整个程序的关键,真正的算法就在这里实现,
k=k+1;
W=W+X(:,i); %如果W与X的第i列的点积小于零,则将W与X的第i列进行加和,并赋值给W
break; %跳出for循环体
else
if (i==size(X,2)) %如果W与X的第i列的点积不小于零,则需要看一下是否已经对X中的20组数都进行了判断,
ok=1; %如果已经对X中的20组数都进行了判断,则结束while循环,结束逼近过程
end
end
end
end
figure(1) %新建一个图像窗口
plot(w1(1,:),w1(2,:),'r.') %绘制第一组的十个点,用红点表示
hold on %保持刚才绘制的十个点不被清除,继续绘图
plot(w2(1,:),w2(2,:),'*') %绘制第二组的十个点,用蓝星表示
xmin=min(min(w1(1,:)),min(w2(1,:))); %得到20个点的最小x值
xmax=max(max(w1(1,:)),max(w2(1,:))); %得到20个点的最大x值
ymin=min(min(w1(2,:)),min(w2(2,:))); %得到20个点的最小y值
ymax=max(max(w1(2,:)),max(w2(2,:))); %得到20个点的最大y值
xindex=xmin-1:(xmax-xmin)/100:xmax+1; %生成一个x序列,用于绘制直线
yindex=-W(2)*xindex/W(3)-W(1)/W(3); %计算直线与上面的x序列相对应的y坐标
plot(xindex,yindex) %绘制直线
温馨提示:内容为网友见解,仅供参考
无其他回答

请matlab高手帮忙分析一下这个程序。详细解释每一步什么意思!答案满意...
for i=1:size(X,2) %i从1增加到20,相当于一个数组指针,依次对X中的各个列进行操作 if (W'*X(:,i)<0) %这是if语句整个程序的关键,真正的算法就在这里实现,k=k+1;W=W+X(:,i); %如果W与X的第i列的点积小于零,则将W与X的第i列进行加和,并赋值给W break; %跳出for循环...

用matlab做一元线性回归,求大神帮忙解释一下这个命令。
X和Y就是你要拟合的数据,上面的是MATLAB工具箱中的regress命令,为[b,bint,r,rint,stats]=regress(y,x,alpha).你这里alpha是缺省的此时默认是0.05 输出b为β的估计值,bint为b的置信区间,r为残差向量,rint为r的置信区间,stats为回归模型的检验统计量,有四个值,第一个是回归方程的决定系数R的平方(R是相关...

求MATLAB高手帮忙修改程序!!!我不知道错在哪里了,但是这个程序运行不...
不知道你这段程序的用途,只能帮你改正一下语法上的错误了:clear n=0:10:6000;if 0<n<190;Tq=19.1;if 190<n<3000;Tq=n'*(9550*3); %这里Tq是一个数组,n也是一个数组,是不能像你那样直接除滴~这个Tq我瞅着下面的程序也没有用到啊 m=1770;g=9.8;G=m*g;nT=0.9;r=0.3075...

请大哥大姐帮忙翻译一下MATLAB的帮助
您能容易地建立模型从头, 或采取一个现有的模型和增加来它。模仿是交互式的, 因此您能正在进行中改变参量和立刻看什么发生。您得以进入对所有分析工具的立即在MATLAB., 因此您能采取结果和分析和形象化他们。Simulink 的目标是给您塑造和模仿乐趣的感觉, 通过鼓励您提出问题, 塑造它, 和看的环境什么发...

...了这个东西,请高手帮忙分析一下这个是什么意思
这是很常规的错误。数组越界。比如,你定义了一个数组,real a(100)大小是100 然后写了 b = a(101) ,因为 a 没有 101 号元素,最大是100,所以越界了。

帮忙分析一下这个电路图的原理,和步骤,主要是要详细解释下原理,谢谢大 ...
这是个可以发送到调频收音机的无线话筒。前级音频接收放大电路由驻极体话筒BM、偏置电阻R1和耦合电容C1等组成,其功能是拾取声音转换为电信号并进行音频放大。驻极体话筒内部有一个场效应管作信号放大,因此拾音灵敏度较高,输出音频信号较大。声音信号引起的驻极体话筒内部场效应管漏极电流的变化,通过...

请高手帮忙分析一下
但是你的题目我还是可以帮你解释一下:首先你要明白printf的参数传递规则是 :右-->坐。其次你要明白连续的&&运算符,当第一次遇到0以后,由于优化,后面的代码将不再执行。第一条printf语句运行结束后 a=1;b=-1;c=0;这个你说懂了,我看未必,继续看下面。。。第二条printf语句运行介绍后 a=2...

MATLAB的作业,请哪位大侠帮忙做下。
3题 >>x=0:0.1:8*pi;>> y=5*sin(x.\/2);>> plot(x,y)>> grid on >> xlim('auto')>> ylim('auto')>> title('y=5sin(x\/2)')>> xlabel('xlabel')>> ylabel('ylabel')结果如图

请VB高手帮忙解决一下问题,要具体一点的分析过程哦,谢谢了! 阅读下列...
给你解释一下 Button And 3=3 这个判断条件。 如下:当and在两个数字中间时,and运算符就不是逻辑与运算符而是按位“与”运算符了,所以当同时按住鼠标的左键和右键Button=3时“Button And 3=3”换成二进制就是 0011与0011=0011 这时这个等式是成立的,窗体就上输出“AAAA"。(Button =0或者...

请高人帮我分析一下这个训练结果吧,特别是Performance=2.18 Gr...
performance:拟合结果误差 The behavior of a network.gradient:梯度 Mu:μ的初始值 validation check:验证检查结果 上面是我自己的理解,你可以在matlab的help文件中搜索glossary就能看到所有用到的NNTool的相关参数。performance表明了你的训练结果已经达到设置的目标误差,训练结果理想。

相似回答