首页 新闻 会员 周边 捐助

matlab 利用其层次聚类,想把聚类后的每个类的行号输出到txt文件中

0
悬赏园豆:10 [已解决问题] 解决于 2018-01-19 17:06

输入文件是一个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

GALI17的主页 GALI17 | 初学一级 | 园豆:96
提问于:2018-01-19 16:23
< >
分享
最佳答案
0

我找了半天哪里不对劲,最后发现

fprintf(fid,'d% ',HCI);

这个里面是 %d,少年。你写成了 d%(手动加粗)

收获园豆:10
BUTTERAPPLE | 老鸟四级 |园豆:3190 | 2018-01-19 16:57

嗷嗷嗷,真的!前辈谢谢,我真的没发现 = =

GALI17 | 园豆:96 (初学一级) | 2018-01-19 17:05

@咖喱free: 你可以试试用Matlab 设置断点来执行程序,这样每一步怎么运行的你可以看的很清楚,也比较好找出哪里错误了。

BUTTERAPPLE | 园豆:3190 (老鸟四级) | 2018-01-19 17:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册