您的代码很好,问题是由于您绘制数据的方式。
plot(xData,yData,'r-');
用线段连接所有点,这意味着眼图的“孔”在线交叉时是“闭合的”。
plot(xData,yData,'r.')
如果你想让一个图与参考图更“相似”,你可以用相同的索引来识别输入点,在一个循环中绘制它们(同样,用“点”),在每个迭代中,你可以改变点的冒号。
编辑以答复评论
在您的例子中,“唯一”索引是16,而颜色的可用“名称”只有8,因此您必须通过显式定义RGB三元组(这可能很无聊)来定义16颜色。
请注意,大多数数据都对应于前三个索引,因此,可以定义三种颜色,让另一种颜色是随机的。
在代码的更新版本中,我使用了这种方法,定义了矩阵
dot_color
如下所示
dot_color=[0 0 .5
.5 .9 .9
0.9 .5 0
rand(length(uni_idx-3),3)]
当然,您也可以“手动定义其他颜色”(矩阵中每个项的值应该在0到1之间)。
fid = fopen('Sample_Eye_1.txt');
% Read data in from csv file
readData = textscan(fid,'%f %f %f','Headerlines',1,'Delimiter',',');
fclose(fid)
% Extract data from readData
index_Data = readData{1,1}(:,1);
% Identify the unique indices
uni_idx=unique(ind