输入文件是一个1000X500的0/1矩阵,利用层次聚类后,聚成5类,想要把每个类的行号依次存入一个txt文件中或者不同的5个txt文件。下面是尝试存入一个txt文件中,但是我实现的方法不知道哪里错了,没有成功。希望前辈帮帮忙,Thanks♪(・ω・)ノ
[code]
clear all
close all
clc
G = 1;%文件个数
N = 5;%聚类数
for k = 1:G
filename1 = strcat(['p' num2str(k) '.txt']);
in = importdata(filename1);
D = pdist2(in,in);%求行与行之间欧式距离
C = linkage(D,'average');%开始聚类
HC = cluster(C, N); %划分聚类为N类
out = strcat(['nhc' num2str(k) '.txt']);
fid = fopen(out,'a');
for i = 1:N %把聚类后的每一类的行坐标存入txt中
HCi = find(HC == i);
HCI = HCi';
fprintf(fid,'d% ',HCI);
fprintf(fid,'\n');
end
fclose(fid);
end
[/code]
结果输出了5个d,txt文件像下面一样:
d
d
d
d
d
我找了半天哪里不对劲,最后发现
fprintf(fid,'d% ',HCI);
这个里面是 %d
啊,少年。你写成了 d%
(手动加粗)
嗷嗷嗷,真的!前辈谢谢,我真的没发现 = =
@咖喱free: 你可以试试用Matlab 设置断点来执行程序,这样每一步怎么运行的你可以看的很清楚,也比较好找出哪里错误了。