在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
MATLAB R2007a plotpv函数存在一个BUG,导致做模式分类绘制决策线的时候出现错误 以 Classify using the least-squares algorithm 为例介绍修正后的实例
1 function plotpv(p,t,v)
2 %PLOTPV Plot perceptron input/target vectors. 3 % 4 % Syntax 5 % 6 % plotpv(p,t) 7 % plotpv(p,t,v) 8 % 9 % Description 10 % 11 % PLOTPV(P,T) take these inputs, 12 % P - RxQ matrix of input vectors (R must be 3 or less). 13 % T - SxQ matrix of binary target vectors (S must be 3 or less). 14 % and plots column vectors in P with markers based on T. 15 % 16 % PLOTPV(P,T,V) takes an additional input, 17 % V - Graph limits = [x_min x_max y_min y_max] 18 % and plots the column vectors with limits set by V. 19 % 20 % Example 21 % 22 % The code below defines and plots the inputs and targets 23 % for a perceptron: 24 % 25 % p = [0 0 1 1; 0 1 0 1]; 26 % t = [0 0 0 1]; 27 % plotpv(p,t) 28 % 29 % The following code creates a perceptron with inputs ranging 30 % over the values in P, assigns values to its weights 31 % and biases, and plots the resulting classification line. 32 % 33 % net = newp(minmax(p),1); 34 % net.iw{1,1} = [-1.2 -0.5]; 35 % net.b{1} = 1; 36 % plotpc(net.iw{1,1},net.b{1}) 37 % 38 % See also PLOTPC. 39 40 % Mark Beale, 1-31-92 41 % Revised 12-15-93, MB 42 % Copyright 1992-2005 The MathWorks, Inc. 43 % $Revision: 1.1.6.2 $ $Date: 2005/12/22 18:20:31 $ 44 45 % ERROR CHECKING 46 % ============== 47 48 if nargin < 2, error('Not enough arguments.'),end 49 50 [pr,pc] = size(p); 51 [tr,tc] = size(t); 52 53 if (pr > 3), error('P must 1, 2, or 3 rows.'), end 54 if tr > 3, error('T must have 1, 2, or 3 rows.'), end 55 56 % DEFAULTS 57 % ======== 58 59 if max(pr,tr) <= 2 60 plotdim = 2; 61 else 62 plotdim = 3; 63 end 64 65 p = [p; zeros(3-pr,pc)]; 66 t = [t; zeros(3-tr,tc)]; 67 68 if nargin == 2 69 minx = min(p(1,:)); 70 maxx = max(p(1,:)); 71 miny = min(p(2,:)); 72 maxy = max(p(2,:)); 73 edgx = (maxx-minx)*0.4+0.1; 74 edgy = (maxy-miny)*0.4+0.1; 75 minz = min(p(3,:)); 76 maxz = max(p(3,:)); 77 edgz = (maxz-minz)*0.4; 78 if plotdim == 2 79 v = [minx-edgx maxx+edgx miny-edgy maxy+edgy]; 80 else 81 v = [minx-edgx maxx+edgx miny-edgy maxy+edgy minz-edgz maxz+edgz]; 82 end 83 end 84 85 % MARKERS 86 % ======= 87 88 marker = ['ob';'or';'*b';'*r';'+b';'+r';'xb';'xr']; 89 90 % PLOTTING 91 % ======== 92 93 for i=1:pc 94 x= [4 2 1]*t(:,i)+1; 95 if (x<1) 96 x=1; 97 end 98 99 if (x>size(marker,1)) 100 x=size(marker,1); 101 end 102 103 m = marker(x,:); 104 plot3(p(1,i),p(2,i),p(3,i),m) 105 hold on 106 end 107 108 % PLOT SET UP 109 % =========== 110 111 set(gca,'box','on') 112 title('Vectors to be Classified') 113 xlabel('P(1)'); 114 ylabel('P(2)'); 115 116 if plotdim <= 2 117 view(2) 118 else 119 view(3) 120 zlabel('P(3)') 121 end 122 axis(v) 123 hold off 124 125
end
1 %function [test_targets, w] = LS(train_patterns, train_targets, test_patterns, weights)
2 3 train_patterns=[0.2 0.3 0.4 0.6 0.1 0.4 0.6 0.7 0.8 0.7; 4 0.7 0.3 0.5 0.5 0.4 0.6 0.2 0.4 0.6 0.5] 5 %train_targets=[ 0 0 0 0 0 1 1 1 1 1] 6 train_targets=[1 1 1 1 1 -1 -1 -1 -1 -1] 7 test_patterns=[0.7 0.7]' 8 weights=[];%[0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1] 9 [test_targets, a] = LS(train_patterns, train_targets, test_patterns, weights) 10 11 plotpv2(train_patterns,train_targets); %绘点,绘制分类模式 12 plotpc(a(1:end-1),a(end:end)); %绘分割线;绘制决策面 13 14 15 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论