热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

GNMF其中一步的matble程序详解

数据来源http:www.cad.zju.edu.cnhomedengcaiDataTextData.html里面的这个数据是一个文件项矩阵解释的代码也是这个事例里面的

数据来源http://www.cad.zju.edu.cn/home/dengcai/Data/TextData.html

里面的

这个数据是一个文件项矩阵

解释的代码也是这个事例里面的

为了matble运行方便,将下载好的数据集放在matble的运行文件中


下面是matble代码

load('USPS')
faceW = 16; 
faceH = 16; 
numPerLine = 20; 
ShowLine = 4; 

Y = zeros(faceH*ShowLine,faceW*numPerLine); 
for i=0:ShowLine-1 
  for j=0:numPerLine-1 
    Y(i*faceH+1:(i+1)*faceH,j*faceW+1:(j+1)*faceW) = reshape(fea(i*numPerLine+j+1,:),[faceH,faceW])'; 
  end 
end 

imagesc(Y);colormap(gray);

运行即可得到



load('USPS')    %%导入USPS.mat数据文件,USPS.mat中包含了一个文本矩阵fea,与一个标记矩阵gnd。fea为   256X9298的矩阵
faceW = 16; 
faceH = 16; 
numPerLine = 20; 
ShowLine = 4; 

Y = zeros(faceH*ShowLine,faceW*numPerLine); %%设定了零矩阵Y,矩阵大小为faceH*ShowLine,faceW*numPerLine,即

                                                                                    16*4    X    16*20   的全零矩阵。

for i=0:ShowLine-1 
   for j=0:numPerLine-1 
     Y(i*faceH+1:(i+1)*faceH,j*faceW+1:(j+1)*faceW) = reshape(fea(i*numPerLine+j+1,:),[faceH,faceW])'; 
   end 

end     %%reshape()函数为转换函数,例如可以将3X4的矩阵转换为2X6的矩阵

           %%Y(i*faceH+1:(i+1)*faceH,j*faceW+1:(j+1)*faceW),看着复杂,实际上是在原全零矩阵上截取一个这样大小的矩阵

       %%这里举例说明:假设当i=0,j=0时,Y(i*faceH+1:(i+1)*faceH,j*faceW+1:(j+1)*faceW)就变为

           %%Y(0*16+1:1*16,0*16+1:1*16)     整理后        Y(1:16,1:16)就表示截取原Y矩阵的前16行与前16列

%%同理   当i=0,j=1时   整理后Y(1:16,17:2*16),表示截取原Y矩阵的前16行,第二个16列,之后i,j不同取值,也依次类推。

%%  fea(i*numPerLine+j+1,:),实际上表示fea矩阵的第i*numPerLine+j+1行,如果是fea(:,i*numPerLine+j+1) 则表示fea的第i*numPerLine+j+1列。

%%为了形象,举例说明,同上假设当i=0,j=0时:

Y(i*faceH+1:(i+1)*faceH,j*faceW+1:(j+1)*faceW) = reshape(fea(i*numPerLine+j+1,:),[faceH,faceW])'; 变为

Y(1:16,1:16)=reshape(fea(1,:),[16,16])‘,其含义就是将fea矩阵的第一行256的数据,按列放入16X16的矩阵,然后转置赋值给Y的第前16行X前16列上,因为默认按列放入。 ( 16*16正好等于fea的列256 )





依次到循环结束

如图最终只用了fea矩阵的前80行,通过最终的结果可以看出,fea矩阵的每一行聚类为一个数字。这是GNMF其中的一步。



imagesc(Y);colormap(gray);

%imagesc(A) 将矩阵A中的元素数值按大小转化为不同颜色,并在坐标轴对应位置处以这种颜色染色。colormap 是用于控制曲面图的颜色。例如: colormap(gray) 输出一个灰色系的曲面图 当然你也可以选择其他色系。嘻嘻试过0到1,由黑到白。




推荐阅读
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
author-avatar
Edwin
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有