📄 editdm.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"><html><head> <title>Description of editdm</title> <meta name="keywords" content="editdm"> <meta name="description" content="Demo of editing technique for data reduction"> <meta http-equiv="Content-Type" content="text/html; charset=big5"> <meta name="generator" content="m2html © 2003 Guillaume Flandin"> <meta name="robots" content="index, follow"> <link type="text/css" rel="stylesheet" href="../m2html.css"></head><body><a name="_top"></a><div><a href="../index.html">Home</a> > <a href="index.html">dcpr</a> > editdm.m</div><!--<table width="100%"><tr><td align="left"><a href="../index.html"><img alt="<" border="0" src="../left.png"> Master index</a></td><td align="right"><a href="index.html">Index for dcpr <img alt=">" border="0" src="../right.png"></a></td></tr></table>--><h1>editdm</h1><h2><a name="_name"></a>PURPOSE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="box"><strong>Demo of editing technique for data reduction</strong></div><h2><a name="_synopsis"></a>SYNOPSIS <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="box"><strong>This is a script file. </strong></div><h2><a name="_description"></a>DESCRIPTION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="fragment"><pre class="comment"> Demo of editing technique for data reduction</pre></div><!-- crossreference --><h2><a name="_cross"></a>CROSS-REFERENCE INFORMATION <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2>This function calls:<ul style="list-style-image:url(../matlabicon.gif)"><li><a href="vecdist.html" class="code" title="function distmat = vecdist(mat1, mat2)">vecdist</a> VECDIST Distance between two set of vectors</li></ul>This function is called by:<ul style="list-style-image:url(../matlabicon.gif)"></ul><!-- crossreference --><h2><a name="_source"></a>SOURCE CODE <a href="#_top"><img alt="^" border="0" src="../up.png"></a></h2><div class="fragment"><pre>0001 <span class="comment">% Demo of editing technique for data reduction</span>0002 0003 <span class="comment">% Roger Jang, March 1997</span>0004 0005 use_pause = 1;0006 <span class="comment">% Collect 2500 data points</span>0007 [xx, yy, zz] = peaks(50);0008 x = xx(:); y = yy(:); z = zz(:);0009 axis_limit = [min(x) max(x) min(y) max(y)];0010 threshold = 0.5;0011 data_n = length(x);0012 0013 <span class="comment">% Plot these 2500 data points and the contour</span>0014 <span class="comment">%index2 = 1:data_n;</span>0015 <span class="comment">%index1 = find(z > threshold);</span>0016 <span class="comment">%index2(index1) = [];</span>0017 <span class="comment">%h = plot(x(index1), y(index1), 'y.', x(index2), y(index2), 'c.');</span>0018 <span class="comment">%set(h, 'markersize', 10);</span>0019 <span class="comment">%hold on</span>0020 <span class="comment">%[c, contourH] = contour(xx, yy, zz, [threshold threshold]);</span>0021 <span class="comment">%set(contourH, 'linewidth', 2, 'color', 'g');</span>0022 <span class="comment">%hold off</span>0023 <span class="comment">%axis(axis_limit);</span>0024 <span class="comment">%axis square;</span>0025 0026 <span class="comment">% Randomly selected 500 data points</span>0027 data_n = 500;0028 tmp = randperm(length(x));0029 index = tmp(1:data_n);0030 x = x(index); y = y(index); z = z(index);0031 0032 index2 = 1:data_n;0033 index1 = find(z > threshold)';0034 index2(index1) = [];0035 figure;0036 <span class="comment">%colordef(gcf, 'black');</span>0037 <span class="comment">% Plot a single contour as the decision boundary</span>0038 [c, contourH] = contour(xx, yy, zz, [threshold threshold], <span class="string">'g-'</span>);0039 set(contourH, <span class="string">'linewidth'</span>, 2, <span class="string">'erase'</span>, <span class="string">'xor'</span>);0040 axis(axis_limit); axis square;0041 pointH = zeros(data_n,1);0042 textH = zeros(data_n,1);0043 <span class="keyword">for</span> i = 1:data_n,0044 pointH(i) = line(x(i), y(i), <span class="string">'color'</span>, <span class="string">'y'</span>, <span class="keyword">...</span>0045 <span class="string">'erase'</span>, <span class="string">'xor'</span>, <span class="string">'linestyle'</span>, <span class="string">'.'</span>, <span class="string">'markersize'</span>, 10);0046 textH(i) = text(x(i), y(i), num2str(i), <span class="string">'fontsize'</span>, 8, <span class="keyword">...</span>0047 <span class="string">'erase'</span>, <span class="string">'xor'</span>, <span class="string">'visible'</span>, <span class="string">'off'</span>);0048 <span class="keyword">end</span>0049 <span class="comment">% Set the color of class-2 points</span>0050 <span class="keyword">for</span> i = index2,0051 set(pointH(i), <span class="string">'color'</span>, <span class="string">'c'</span>);0052 <span class="keyword">end</span>0053 0054 <span class="comment">% Circles to display picked points and it's nearest neighbor</span>0055 r1 = 0.2;0056 r2 = 0.2;0057 theta = linspace(0, 2*pi);0058 circle_x = cos(theta); 0059 circle_y = sin(theta); 0060 circle1H = line(nan, nan, <span class="string">'color'</span>, <span class="string">'r'</span>, <span class="string">'erase'</span>, <span class="string">'xor'</span>);0061 circle2H = line(nan, nan, <span class="string">'color'</span>, <span class="string">'w'</span>, <span class="string">'erase'</span>, <span class="string">'xor'</span>);0062 title(<span class="string">'Red circle: picked, white circle: nearest'</span>);0063 0064 <span class="comment">% All data points</span>0065 output = z>threshold;0066 data = [x y output];0067 <span class="comment">% Calcualte distance matrix of all data points</span>0068 distmat = <a href="vecdist.html" class="code" title="function distmat = vecdist(mat1, mat2)">vecdist</a>([x y]);0069 <span class="comment">% Add a big number to the diagonal elements of the distance matrix</span>0070 distmat = distmat + diag(realmax*ones(data_n,1));0071 current_data = 1:data_n;0072 <span class="comment">% Editing the data set</span>0073 <span class="keyword">for</span> i = 1:10*data_n,0074 fprintf(<span class="string">'i = %d\n'</span>, i);0075 <span class="comment">% randomly picked a data point</span>0076 picked = randelem(current_data);0077 <span class="comment">% find the nearest data point to the picked</span>0078 [junk, nearest] = min(distmat(picked, :));0079 <span class="comment">% delete a point if the picked and the nearest are in different classes</span>0080 <span class="keyword">if</span> output(picked) ~= output(nearest),0081 <span class="comment">% dist1 = min. dist. of picked to same-class data</span>0082 ind1 = find(output==output(picked));0083 ind1(find(ind1==picked)) = [];0084 dist1 = min(distmat(picked, ind1));0085 <span class="comment">% dist2 = min. dist. of nearest to same-class data</span>0086 ind2 = find(output==output(nearest));0087 ind2(find(ind2==nearest)) = [];0088 dist2 = min(distmat(nearest, ind2));0089 <span class="keyword">if</span> dist1 > dist2,0090 to_delete = picked;0091 <span class="keyword">else</span>0092 to_delete = nearest;0093 <span class="keyword">end</span>0094 <span class="comment">% fprintf('deleting point %d ...\n', to_delete);</span>0095 set(circle1H, <span class="string">'xdata'</span>, r1*circle_x+x(picked), <span class="keyword">...</span>0096 <span class="string">'ydata'</span>, r1*circle_y+y(picked));0097 set(circle2H, <span class="string">'xdata'</span>, r2*circle_x+x(nearest), <span class="keyword">...</span>0098 <span class="string">'ydata'</span>, r2*circle_y+y(nearest));0099 <span class="keyword">if</span> use_pause, fprintf(<span class="string">'Hit any key to go on...\n'</span>); pause; <span class="keyword">end</span>0100 distmat(to_delete, :) = realmax*ones(1, data_n);0101 distmat(:, to_delete) = realmax*ones(data_n, 1);0102 delete(pointH(to_delete));0103 delete(textH(to_delete));0104 current_data(find(current_data==to_delete)) = [];0105 set(circle1H, <span class="string">'xdata'</span>, nan, <span class="string">'ydata'</span>, nan);0106 set(circle2H, <span class="string">'xdata'</span>, nan, <span class="string">'ydata'</span>, nan);0107 drawnow0108 <span class="keyword">end</span>0109 <span class="keyword">end</span></pre></div><hr><address>Generated on Thu 30-Oct-2008 12:53:56 by <strong><a href="http://www.artefact.tk/software/matlab/m2html/">m2html</a></strong> © 2003</address></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -